Installshield Product Code

The Windows Installer engine uses the Product Code to determine whether a product is already installed on a computer.

  • Add/Remove Programs (ARP): The entry visible in "Apps & Features" or "Programs and Features" is tied directly to this GUID.
  • To master the InstallShield Product Code, you must distinguish it from two other critical GUIDs. Confusing these is the #1 cause of deployment failures.

    | Identifier | Scope | When it changes | Used for | | :--- | :--- | :--- | :--- | | Product Code | Per-version | Every major or minor release (if new install logic is needed) | Identifying the installed instance of a product. | | Package Code | Per-build | Every single build (always) | Uniquely identifying the .MSI file itself. Do not manually change this. | | Upgrade Code | Per-product | Never (over the lifetime of the product) | Linking all versions of the same product for major upgrades. | installshield product code

    Click the ... button (ellipsis) next to Product Code. Click New GUID > OK. Do NOT manually type a GUID—typos lead to impossible-to-debug errors.

    Creating a patch (.MSP or .ISP) is where Product Code management becomes an art. The Windows Installer engine uses the Product Code

    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.

    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: Add/Remove Programs (ARP): The entry visible in "Apps

    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."


  • For InstallScript and other project types, behavior differs:
  • InstallShield offers a “Generate new Product Code on build” option for Major Upgrade builds; use carefully.
  • | | Upgrade Code | Product Code | |---|---|---| | Changes over product lifetime? | ❌ No | ✅ Yes (major updates) | | Used for | Finding previous versions to upgrade | Identifying current installed instance | | Side-by-side install possible? | No (same Upgrade Code) | Yes (different Product Code) |