首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InstallShield文件序列号

InstallShield文件序列号
EN

Stack Overflow用户
提问于 2011-04-14 02:20:49
回答 3查看 1.4K关注 0票数 1

我正在将文件添加到现有的MSI项目中,构建InstallShield,然后从它创建一个MSP以应用于现有安装。

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

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

有什么想法吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-14 09:01:14

可能会有一些问题...

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

如果这不能解决问题,可能与您将新文件添加到包中的方式有关(您是否有外部CAB文件?)和补丁构建选项来构建一个‘二进制’补丁

票数 2
EN

Stack Overflow用户

发布于 2011-04-14 21:30:27

您可以尝试将项目保存在XML format中-这可以解决内部“无序”数据库顺序的一些奇怪之处。在第一次以这种方式保存、关闭和重新加载之后,如果愿意,您可以将其转换回二进制项目。如果在添加新文件后尝试执行此操作,请确保在文件表的XML中对记录进行重新排序,或在尝试执行此操作之前将其删除。

票数 1
EN

Stack Overflow用户

发布于 2011-04-24 08:10:30

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

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

为了让patches起作用,我遵循了的一些经验法则

  • 每个文件一个组件
  • 更改的绝对文件路径意味着新的组件GUID
  • 永远不会更改不更改绝对安装路径的文件的组件GUID
  • 不要使用Installshield的动态文件

所有组件创建规则(有很多,请参阅

  • )
  • 只使用完整的文件补丁,不使用二进制补丁
  • 还有一些我现在不记得了的内容。这不是我的developer system
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5653727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档