When a user goes to "Add or Remove Programs," Windows looks up the Product Code to find the associated uninstaller. Preventing Duplicates:
Identifies a family of related products . This code remains identical across all versions (v1.0, v2.0, v3.0) of your software to allow Windows Installer to detect and upgrade older versions.
Use COM automation scripts (VBScript or PowerShell) to modify the ISWiProject.ProductCode property before launching a build.
Are you encountering a during installation? Share public link
Copying an old .ism project file to start a new application project clones the Product Code. Always generate a fresh Product Code and Upgrade Code for a brand new application. Troubleshooting Common Product Code Issues "Another version of this product is already installed" installshield product code
Run the Setup.exe with logging enabled and search the log file for the Product Code:
| Update Type | Change Product Code? | Change Product Version? | | :--- | :--- | :--- | | | No | No | | Minor Upgrade | No | Yes | | Major Upgrade | Yes | Yes (Increase major version) |
A developer creates an installer, changes a few files, reuses the same Product Code, but changes the version number. Users install “over” the old one — everything seems fine. Later, they try to uninstall, and Windows removes the wrong files or leaves shortcuts behind. Why? Windows Installer used the Product Code to track the product state but got confused because the cached MSI didn’t match the installed files.
This is the most critical question for any installer developer. The answer is defined by the type of update you are creating: When a user goes to "Add or Remove
Whether you're a seasoned deployment engineer or a dev just trying to get an app out the door, mastering the Product Code is your first step to a stable installation experience. Do you need help setting up Major Upgrade
By default, InstallShield creates a new Product Code for every new project. However, it does automatically change it when you build a new release. You must manage this manually or via automation.
For advanced automation, you can interact with the Product Code outside of the InstallShield IDE. The Product Code is stored as a property in your project file, and you can edit the .ism file programmatically (e.g., by editing the .islproj MSBuild file) to assign a new GUID value before a build. Additionally, for InstallScript projects, you can use the PRODUCT_GUID system variable in your custom actions or scripts. For Basic MSI projects, you can use standard Windows Installer API functions like MsiGetProductInfo() from C++ or C# to query the Product Code from an installed product or from an .msi database. For example, you can perform an administrative install ( setup.exe /a ) to extract the .msi file and then use the Windows Installer APIs to read the Product Code from it.
The Product Code must adhere to the standard GUID format: a string of 32 hexadecimal digits, typically displayed in five groups separated by hyphens, and enclosed in curly braces. An example is 5D607F6A-AF48-4003-AFA8-69E019A4496F . All letters in the GUID must be uppercase. If you ever need to generate a GUID programmatically, for example, from a PowerShell script during a build process, you can use a command like (New-Guid).ToString("B").ToUpper() to ensure it is in the correct format. Use COM automation scripts (VBScript or PowerShell) to
Getting this code right is the difference between a seamless software update and a support ticket nightmare. Here is a breakdown of what the Product Code is, why it matters, and how to manage it in InstallShield What is the Product Code? The Product Code is a
If your CI/CD pipeline triggers Major Upgrades frequently, use the InstallShield Automation Interface (COM) or command-line parameters ( -g flags) to programmatically generate a new Product Code during production builds.
Understanding the InstallShield Product Code: The Ultimate Guide