我刚刚了解到,通过在InstallShield中生成新的产品代码,安装程序将升级以前版本的软件,而不是要求用户先卸载以前的版本。这是一个很好的第一步,但是我似乎仍然希望每次构建时都能够自动生成新产品代码的过程。目前,我必须手动记住在构建新安装程序之前执行此操作。
我使用的是InstallShield LE 2015,所以我不确定这是否是LE版本的限制。有人对InstallShield更有经验请解释一下是否可能以及我如何设置它?
答案 0 :(得分:1)
ProductCode存储为属性,因此您可以编辑.islproj文件(或其用于msbuild语法项目文件的名称)以指定该属性的新guid值。通过添加类似于以下内容的ItemGroup,遵循Customizing the .isproj File中概述的方法。请注意,此示例假定您以某种方式在$(MyNewProductCode)
中提供了有效的GUID。
<ItemGroup>
<InstallShieldPropertyOverrides Include="$(MyNewProductCode)">
<Property>ProductCode</Property>
</InstallShieldPropertyOverrides>
</ItemGroup>
答案 1 :(得分:1)
为了扩展Michael Urman的上述答案,我可以使用property function直接从.isproj文件中生成新的GUID。当我的CI机器构建我的安装屏蔽项目时,产品代码会自动更新:
<ItemGroup>
<InstallShieldPropertyOverrides Include="{$([System.Guid]::NewGuid().ToString().ToUpper())}">
<Property>ProductCode</Property>
</InstallShieldPropertyOverrides>
</ItemGroup>
Hooray for automation。