2016-08-04 65 views
0

我最近剛剛得知,通過產生的InstallShield新的產品代碼,安裝程序將升級軟件以前的版本,而不需要用戶先卸載以前版本的。這是一個偉大的第一步,但它似乎仍然喜歡我應該能夠自動生成一個新的產品代碼,每次我建造時間的過程。目前我必須手動記住在構建新安裝程序之前執行此操作。如何使用InstallShield自動創建新的產品代碼?

我使用InstallShield 2015年LE,所以我不知道這可能是的LE版本,或者不是限制。有人對InstallShield有更多的經驗嗎?請解釋一下如果可能的話以及我如何設置這個請求?

回答

1

ProductCode存儲爲一個屬性,因此您可以編輯.islproj文件(或者其使用的任何名稱爲msbuild-syntax項目文件)來爲該屬性指定新的guid值。通過添加類似如下的的ItemGroup按照Customizing the .isproj File概述的方法。請注意,此示例假定您在某種程度上在$(MyNewProductCode)中提供了有效的GUID。

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

您是通過命令行還是通過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/

我們用它進行基本的微星,微星INSTALLSCRIPT的一段時間和項目INSTALLSCRIPT沒有任何問題,直到我們終於接通我們的項目到Installshield的API的。

0

爲了擴展邁克爾Urman的回答以上,我能夠從.isproj文件中使用property function直接生成新的GUID。當我的CI機建立我的安裝盾構工程,產品代碼使用這個自動更新:

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

萬歲自動化。