【问题标题】:How to automatically create new Product Code on build with InstallShield?如何使用 InstallShield 在构建时自动创建新的产品代码?
【发布时间】:2016-12-10 19:34:06
【问题描述】:

我最近刚刚了解到,通过在 InstallShield 中生成新的产品代码,安装程序将升级您的软件的以前版本,而不是要求用户首先卸载以前的版本。这是一个很好的第一步,但我似乎仍然应该能够在每次构建时自动生成新产品代码的过程。目前我必须手动记住在构建新安装程序之前执行此操作。

我正在使用 InstallShield LE 2015,所以我不确定这是否可能是 LE 版本的限制。是否有对 InstallShield 更有经验的人请解释一下是否可行以及如何进行设置?

【问题讨论】:

    标签: installshield installshield-le


    【解决方案1】:

    ProductCode 存储为属性,因此您可以编辑 .islproj 文件(或它为 msbuild-syntax 项目文件使用的任何名称)以为该属性指定新的 guid 值。遵循Customizing the .isproj File 中概述的方法,添加类似于以下内容的 ItemGroup。请注意,此示例假定您以某种方式在 $(MyNewProductCode) 中提供了有效的 GUID。

    <ItemGroup>
       <InstallShieldPropertyOverrides Include="$(MyNewProductCode)">
           <Property>ProductCode</Property>
       </InstallShieldPropertyOverrides>
    </ItemGroup>
    

    【讨论】:

      【解决方案2】:

      您是通过命令行还是通过 msbuild 或某种自动化方法进行构建?如果你是,你可以使用下面的方法:

      :: Change Product Code for Build
      FOR /f "delims=" %%i IN ('"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64\uuidgen.exe"') DO SET productcodeguidcl=%%i
      "C:\PATHTOFNR\fnr.exe" --cl --dir "C:\PATHTOYOURISM" --fileMask "YOUR.ism" --useRegEx --alwaysUseEncoding "utf-8" --find "ProductCode.*{.*}" --replace "ProductCode</td><td>{%productcodeguidcl%}"
      

      请注意,以下示例假定您在构建服务器上有 uuidgen.exe(免费),并且还需要免费工具 fnr.exe (https://findandreplace.codeplex.com/)

      我们将它用于基本 MSI、Installscript MSI 和 Installscript 项目一段时间没有任何问题,直到我们最终将项目切换到 Installshield API。

      【讨论】:

        【解决方案3】:

        为了扩展上面 Michael Urman 的回答,我能够使用 property function 直接从 .isproj 文件中生成新的 GUID。当我的 CI 机器构建我的 install shield 项目时,产品代码会自动更新:

        <ItemGroup>
           <InstallShieldPropertyOverrides Include="{$([System.Guid]::NewGuid().ToString().ToUpper())}">
               <Property>ProductCode</Property>
           </InstallShieldPropertyOverrides>
        </ItemGroup>
        

        自动化万岁。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-15
          • 2021-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-04
          相关资源
          最近更新 更多