我使用旧版本的InstallShield只是将文件复制到本地硬盘,然后中止,这样安装程序就不会创建任何足迹,例如HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall {my GUID}和C:\ Program Files \ InstallShield安装信息{my GUID}。
我想将我的安装程序更改为MSI,但我不知道MSI是否可以执行相同的操作,因为我知道如果我中止,MSI将会回滚。
如果我可以使用MSI,我该怎么办?
TIA。
答案 0 :(得分:3)
不,MSI的重点是集成到Windows中,例如允许通过控制面板管理已安装的应用程序。因此,通过.msi文件安装的组件始终会在Windows Installer数据库中留下足迹。
答案 1 :(得分:2)
你想走多远?您是否只想隐藏产品在“添加/删除程序”中的条目,或者您是否真的希望MSI甚至不记得它没有安装? I.E无需卸载,修复,升级,修补。
如果愿望是前者,请查看ARPSYSTEMCOMPONENT Property。如果欲望是后者,你想制作一个“木马MSI”。请注意,许多专家反对这一点,但我已经完成了这项工作,就像微软和谷歌等大公司的团队一样。要创建特洛伊木马MSI,您有意在安装程序中省略发布标准操作,例如PublishProduct Action。你需要确定自己了解自己的目标是什么,以及在做这件事时你放弃了什么,但有时候它才有意义。
更新:OP表示目的是修补已安装的MSI。
这真的不应该这样做。您应该使用MSI和MSP进行适当的更新/补丁。但是,你要求的是什么。在我工作的地方,他们有一个叫做“不是补丁,补丁”的东西。它很丑陋但确实有用。意识到你永远无法修复补丁(除了重新应用它),你也可以进入修复MSI撤消补丁的情况,这样你就必须再次应用补丁。当然,在添加/删除程序中没有卸载补丁或版本化工件。
所以是的,它可以做到,但我老实说不建议你这样做。我只是“支持”这项工作,因为其他人将其投入使用,业务领域已经习惯了它作为(假的)服务模式。