I have a couple of packages, that were built with Visual C++ 2015 (x86) 24210 job. Since then, the version was upgraded to 24212 and 25146 through our imaging process. The main package has multiple install steps and is installed on 4,000 devices.Now when the 24210 pre-req job runs, it errors out with MSI error code 1638: “Another version of this product is already installed”.
Apps do not have an issue with either of newer packages.
Any thoughts on best practice between options:
Couple of options here:
If your 24210 version is an MSI, it should have a ‘detect’ procedure in its package if the package was built using the standard MSI packaging methods. You can simply deliver this procedure to all targets. Where the software is installed it will create the installation record for you without actually running any installation procedure. If the software is not installed, the detect procedure exits with an error and the installation record is not created.
You can run a generic MSI detect procedure on all your targets. You should be aware though that this will add ALL MSI based software detected on each target as an installed package, creating dummy packages where no matching package already exists.
Use the AM script job(s) documented here: https://communities.ca.com/docs/DOC-231174722-mapping-discovered-software-to-installed-packages to create the installation record(s) you need based on already discovered software inventory.
Also, please vote on this idea: View all comments on this idea<https://communities.ca.com/ideas/235738180-software-packages-with-already-installed-detection-options?commentID=233967583#comment-233967583> which requests a built-in method to accomplish this.
Steve McCormick, ITIL
Principal Services Consultant