Windows installer InstallShield文件序列号

Windows installer InstallShield文件序列号,windows-installer,installshield,installscript-msi,Windows Installer,Installshield,Installscript Msi,我正在向现有InstallShield MSI项目添加文件,构建MSI,然后从中创建MSP以应用于现有安装 问题是,当我向MSI项目添加新文件时,序列号并没有以增量方式设置。我进入Direct Editor,编辑序列号,使它们从旧的停止的地方开始,但是当我构建项目时,我输入的序列号被忽略。如果序列号与此不同,则会导致MSP安装不正确 有没有办法修复InstallShield覆盖的序列号?如果我不向项目中添加任何新文件,现有文件的序列号将保持不变。就好像我要添加的新文件正在“中间”安装 有什么想法

我正在向现有InstallShield MSI项目添加文件,构建MSI,然后从中创建MSP以应用于现有安装

问题是,当我向MSI项目添加新文件时,序列号并没有以增量方式设置。我进入Direct Editor,编辑序列号,使它们从旧的停止的地方开始,但是当我构建项目时,我输入的序列号被忽略。如果序列号与此不同,则会导致MSP安装不正确

有没有办法修复InstallShield覆盖的序列号?如果我不向项目中添加任何新文件,现有文件的序列号将保持不变。就好像我要添加的新文件正在“中间”安装

有什么想法吗


谢谢

可能有一些问题

如果我没记错的话,我认为您需要在设置用于指向以前的MSI包的属性之后构建新的MSI。这将强制新包使用与旧包相同的文件ID


如果这不能解决问题,那么可能与您如何将新文件添加到包中(是否有外部CAB文件?)以及用于构建“二进制”修补程序的修补程序构建选项有关。您可以尝试将项目保存到中-内部“无序”修补程序有一些奇怪之处这可以解析的数据库顺序。在第一次以这种方式保存、关闭和重新加载之后,如果愿意,可以将其转换回二进制项目。如果在添加新文件后尝试此操作,请确保对文件表的XML中的记录重新排序,或在尝试此操作之前将其删除。

这些序列号不需要按顺序设置。事实上,在大多数情况下,我倾向于在windows installer中对不同的序列号使用10的增量,以确保我可以在不更改所有项目的所有编号的情况下重新排序。不要弄乱这些数字,让Installshield来控制它们

user707082是正确的,您应该指向MSI的以前版本,以允许Installshield为新设置同步GUID,但这通常适用于动态生成的组件,如果您通过手动覆盖违反Windows Installer组件规则,则修补程序仍可能失败

对于补丁,我遵循一些经验法则

  • 每个文件一个组件
  • 更改的绝对文件路径意味着新的组件GUID
  • 决不要更改不更改绝对安装路径的文件的组件GUID
  • 不要使用Installshield的动态文件链接
  • 遵循所有组件创建规则(有很多,请参阅SDK)
  • 仅使用完整文件修补程序,不使用二进制修补程序
  • 还有一些我现在不记得了。这不是我的开发人员系统