我通过编辑MSI数据库更改MSI的产品代码,升级代码和产品名称。使用vbscript设置MSI的包装代码
参考: - http://www.codeproject.com/Articles/383481/Editing-an-MSI-Database
我能够改变上述所有参数,但无法改变包装代码。
建议更改包装代码的方法。
我通过编辑MSI数据库更改MSI的产品代码,升级代码和产品名称。使用vbscript设置MSI的包装代码
参考: - http://www.codeproject.com/Articles/383481/Editing-an-MSI-Database
我能够改变上述所有参数,但无法改变包装代码。
建议更改包装代码的方法。
为什么你甚至需要设置包代码?
它在每次构建期间自动生成。
看看包元素的文档:
http://wixtoolset.org/documentation/manual/v3/xsd/wix/package.html
“包代码GUID产品或合并模块当编译一个产品,这个属性不应该为了设置以允许为每个版本生成包代码编译合并模块时,必须将此属性设置为模块化引导“
我需要它,因为MSI在相应的包代码中创建了缓存,这限制了我们的制作另一个我使用MSI所以我做了这个应用程序的nstance通过
using (var database = new Database(@"D:\\Nirvana\\WorkingCopy\\trunk\\proj1\\installer.msi", DatabaseOpenMode.Direct))
{
database.SummaryInfo.RevisionNumber = "{" + Guid.NewGuid() + "}";
}
我猜测,这里的要求是安装同一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文件每次。
我同意你的看法,但我们的要求是创建独立实例...我已经研究过MSINEWINSTANCE,但是我认为在改变基本MSI方面没有问题? – Keshav
找到一种方法来做到这一点与VBScript,只是出于好奇: “property #9”是包代码(修订号)。
Set wi = CreateObject("WindowsInstaller.Installer")
Set summary = wi.SummaryInformation("your.msi", 2)
summary.Property(9) = "{PUT-NEW-GUID-HERE}"
summary.Persist
我也不太了解你的问题。通常,没有人生成PackageCodes,它们是在构建时自动生成的。为什么要在构建之后再次更改一个值(到另一个随机guid)? – Nikolay
因为我想从同一个MSI包创建多个实例,而不是再次构建MSI。所以有必要更改包代码,以便您从相同的MSI创建独立的实例。 – Keshav