我正在向现有的InstallShield MSI项目添加文件,构建MSI,然后从中创建MSP以应用于现有安装。
问题是,当我向MSI项目添加新文件时,序列号不会以递增方式设置。我进入直接编辑器,编辑了序列号,使它们从旧的停止处开始,但是当我构建项目时,我输入的序列号被忽略。如果序列号不同,则会导致MSP无法正确安装。
有没有办法修复被InstallShield覆盖的序列号?如果我没有向项目添加任何新文件,则现有文件的序列号保持不变。好像我正在添加的新文件正在“中间”安装。
有什么想法?
由于
答案 0 :(得分:2)
可能是一些问题......
如果我没记错的话,我认为你需要在设置用于指向前一个MSI包的属性后构建新的MSI。这将强制新包使用与旧包相同的文件ID。
如果这不能解决问题,它可能与你如何将新文件添加到包(你有外部CAB文件吗?)和补丁构建选项的组合有关'二进制'补丁
答案 1 :(得分:1)
您可以尝试在XML format中保存项目 - 这可以解决内部“无序”数据库顺序的一些奇怪之处。在第一次保存,关闭并以这种方式重新加载后,如果您愿意,可以转换回二进制项目。如果在添加新文件后尝试此操作,请确保对File表的XML中的记录重新排序,或在尝试此操作之前将其删除。
答案 2 :(得分:0)
不需要按顺序设置这些序列号。事实上,在大多数情况下,我倾向于在Windows安装程序中为不同的序列号使用10的增量,以确保我可以重新排序而不更改所有项目的所有数字。不要弄乱这些数字,只需让Installshield控制它们。
user707082 是正确的,您应该指向MSI的上一版本,以允许Installshield为同步guids 进行新设置,但这通常适用于动态生成的组件,如果通过手动覆盖违反Windows Installer组件规则,修补程序可能仍会失败。
要使补丁正常工作,我可以按照一些经验法则: