2015-07-21 15 views

回答

0

为什么你甚至需要设置包代码?

它在每次构建期间自动生成。

看看包元素的文档:

http://wixtoolset.org/documentation/manual/v3/xsd/wix/package.html

包代码GUID产品或合并模块当编译一个产品,这个属性不应该为了设置以允许为每个版本生成包代码编译合并模块时,必须将此属性设置为模块化引导

0

我需要它,因为MSI在相应的包代码中创建了缓存,这限制了我们的制作另一个我使用MSI所以我做了这个应用程序的nstance通过

using (var database = new Database(@"D:\\Nirvana\\WorkingCopy\\trunk\\proj1\\installer.msi", DatabaseOpenMode.Direct)) 
{ 
    database.SummaryInfo.RevisionNumber = "{" + Guid.NewGuid() + "}"; 
} 
+0

我也不太了解你的问题。通常,没有人生成PackageCodes,它们是在构建时自动生成的。为什么要在构建之后再次更改一个值(到另一个随机guid)? – Nikolay

+0

因为我想从同一个MSI包创建多个实例,而不是再次构建MSI。所以有必要更改包代码,以便您从相同的MSI创建独立的实例。 – Keshav

1

我猜测,这里的要求是安装同一MSI多次,这意味着他们需要更改设置的GUID。然而,解决这个问题的更正常的方法是使用MSINEWINSTANCE。

https://msdn.microsoft.com/en-us/library/aa370326(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/aa369528(v=vs.85).aspx

,让你不改变基本MSI文件每次。

+0

我同意你的看法,但我们的要求是创建独立实例...我已经研究过MSINEWINSTANCE,但是我认为在改变基本MSI方面没有问题? – Keshav

1

找到一种方法来做到这一点与VBScript,只是出于好奇: “property #9”是包代码(修订号)。

Set wi = CreateObject("WindowsInstaller.Installer") 
Set summary = wi.SummaryInformation("your.msi", 2) 
summary.Property(9) = "{PUT-NEW-GUID-HERE}" 
summary.Persist