Result: Windows treats your new version as a completely different product. Users end up with two independent installations. Fix: Once you ship version 1.0, write down your Upgrade Code in a source-controlled text file. Never change it.
If you want the new version to stand alongside the old version (side-by-side installation), you need a new Product Code AND a new Upgrade Code. If you want the new version to replace the old version, change the Product Code but keep the Upgrade Code identical.
Creating a patch (.MSP or .ISP) is where Product Code management becomes an art.
The Golden Rule of Patching: You must not change the Product Code for a patch targeting an existing version. The patch is designed to update a product in place. installshield product code
However, if you want to deliver a patch and allow the product to be recognized as a new version for future upgrades, you have two options:
If you accidentally change the Product Code and try to build a patch, InstallShield will warn: "The product code has changed. This patch will appear as a new product."
Keep your Upgrade Code constant. Store it as a project setting. Use a build script to: Result: Windows treats your new version as a
At its core, the InstallShield Product Code is a GUID (e.g., AC76BA86-7AD7-1033-7B44-A94000000001) that uniquely identifies an application suite or product.
However, there is a critical nuance that causes endless confusion: InstallShield supports two major project types—InstallScript and MSI (Windows Installer).
| Your change | Change Product Code? | Upgrade type | |------------|---------------------|---------------| | New major version (v2.0) | ✅ Yes | Major upgrade | | New minor version (v1.1) | ❌ No | Minor upgrade / patch | | Hotfix (same version) | ❌ No | Patch (.msp) | | Product rename | ✅ Yes | Major upgrade | | Add/remove features | ❌ No (reinstall) | Not an upgrade | | Different edition (Pro vs Enterprise) | ✅ Yes | Side-by-side possible | If you want the new version to stand
Result: You write a custom action that checks for OLD-GUID. When you change the Product Code, your script breaks.
Fix: Use property references (e.g., [ProductCode]) in InstallScript or use the MSI API to retrieve the current product code dynamically.
In Windows Installer (MSI) technology — which InstallShield uses — a Product Code is a GUID (e.g., A1B2C3D4-E5F6-7890-AB12-CD34EF567890) that uniquely identifies a product.