2016-08-04 1 views
0

저는 방금 전에 InstallShield에서 새로운 제품 코드를 생성함으로써 설치 프로그램이 사용자가 이전 버전을 먼저 제거해야하는 대신 소프트웨어의 이전 버전을 업그레이드한다는 것을 알게되었습니다. 이것은 훌륭한 첫 걸음이지만, 내가 만들 때마다 새로운 제품 코드를 생성하는 프로세스를 자동화 할 수 있어야한다고 생각합니다. 현재 새로운 설치 프로그램을 만들기 전에이 작업을 수동으로 수행해야합니다.InstallShield로 빌드 할 때 자동으로 새 제품 코드를 만드는 방법은 무엇입니까?

저는 InstallShield LE 2015를 사용하고 있습니다. 따라서 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 또는 자동화 된 방법을 통해 빌드하고 있습니까? 만약 그렇다면, 당신은 아래의 방법을 사용할 수 있습니다 : 다음 예제는 빌드 서버에 uuidgen.exe (무료)가 또한 무료 도구 fnr.exe을 필요로 가정

:: 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%}" 

주 (https://findandreplace.codeplex.com/)

우리는 마침내 프로젝트를 Installshield API로 바꿀 때까지 Basic MSI, Installscript MSI 및 Installscript 프로젝트에 아무런 문제없이 사용했습니다.

0

위의 Michael Urman의 답변에서 확장하려면 property function을 사용하여 .isproj 파일에서 직접 새 GUID를 생성 할 수있었습니다. CI 시스템이 설치 실드 프로젝트를 빌드하면 제품 코드는 자동으로 다음과 같이 업데이트됩니다.

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

자동화가 필요합니다.

관련 문제