• What are Upgrade, Product and Package Codes used for? By pusu


    Following content is reprinted from here, please go to the original website for more information.

    Author:  pusu 

    Recently I am working with Windows Installer and think ProductCode, UpgradeCode and PackageCode are very basic but very important concepts, so I make a conclusion here for references. Both ProductCode and UpgradeCode can be viewed from Property table in MSI package, and PackageCode can be reviewed from View->Summary information if you view MSI through Orca (which is shipped with Windows SDK.)

    What is UpgradeCode in the MSI package?

    The upgrade code is the unique GUID of identifying a family of a product. That is, the same products with different versions have probably been shipped for a few releases. These products have different ProductCodes, but they are linked together by using SAME UpgradeCode. For example, assuming that we wrote a product called "Happy MSI" and this product only has one MSI package for deployment on client system. The first release of this product is actually the MSI package with name "version_1.msi", and the second release is "version_2.msi". Then, these two MSI must have same UpgradeCode. When users run "version_2.msi" on their system, the windows installer will use the UpgradeCode to decide if previous versions of this product are already present on the system. Installer API "MsiEnumRelatedProducts()" uses the UpgradeCode to query all the family products.

    What is ProductCode in MSI Package?

    The product code is the unique GUID of identifying an application or product release; In other words, different versions and languages of Product must have different product codes. http://msdn.microsoft.com/en-us/library/aa370854(VS.85).aspx. Also, ProductCode can be used to query feature state, and product state. For example,  installer API "MsiQueryFeatureStateEx()" and "MsiQueryProductState()", etc.

    What is PackageCode in MSI Package?

    Similar, the package code is the unique GUID identifying a particular Windows Installer package. Here, package mapps to a physical file with extension name ".MSI". Remember, a product consists of one or multiple (MSI) packages, and one package also can be shared among different products. The combination of ProductCode and PackageCode is used to determine if the users want to reinstall the product or not. I found the book "The Definitive Guide to Windows Installer" has the best explaination on this. There are four scenarios:

    • If you install same product (same ProductCode) from the same package (same PackageCode), it means you want to go to "repair" or "uninstall" mode.
    • If you install same product (same ProductCode) from the different package (different PackageCode), it is not allowed. You willl get message "Another version of this product is already installed", and you have to remove the existing installed product before you install the new one.
    • If you install different product (different ProductCode) from the package (same PackageCode), it would go into maintenance mode and ask for a repair or remove.
    • If you install different product (different ProductCode) from the package (different PackageCode), the installer will think it is a NEW product and let you go ahead.
  • 相关阅读:
    Jar依赖很多,找不到重复的包??好工具来帮助您
    BHP编译器教程
    MySvn--一个简单单机svn程序源码-delphi开发
    delphi也可以使用C语言脚本 --Picoc脚本语言
    sqlserver,mysql,oracle通用的模拟和改进的全文搜索算法
    EhReport ,CReport改进版本,再次改进 ,V1.31
    Robot Framework(3)——RIDE工具详解
    Robot Framework(2)——简单运行案例
    Robot Framework(1)——环境搭建及安装
    Jenkins(1)—— 部署安装
  • 原文地址:https://www.cnblogs.com/cindy-hu-23/p/4806607.html
Copyright © 2020-2023  润新知