MSI安装程序是否可以安装文件并在不留下足迹的情况下终止?

问题描述:

我使用旧版本的InstallShield只是简单地将文件复制到本地硬盘,然后中止,以便thie安装程序不会创建任何足迹,如HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \卸载{我的GUID}和C:\ Program Files \ InstallShield安装信息{我的GUID}。我想知道MSI是否可以做同样的事情,因为我知道如果我放弃了,MSI将会回滚。MSI安装程序是否可以安装文件并在不留下足迹的情况下终止?

如果我可以用MSI来做,我该怎么做?

TIA。

不,MSI的重点是集成到Windows以允许通过控制面板管理已安装的应用程序。因此,通过.msi文件安装的组件始终会在Windows Installer数据库中留下足迹。

+0

感谢您的快速回答。 – klee 2010-11-08 14:26:43

你想要多久?您是否仅仅想要在添加/删除程序中隐藏您的产品条目,或者您是否真的希望MSI不记得它没有安装? I.E无需卸载,修复,升级,修补。

如果欲望是前者,请看看ARPSYSTEMCOMPONENT Property。如果希望是后者,你想制作一个“* MSI”。请注意,许多专家反对这一点,但我已经在时机上做过,就像微软和谷歌等大公司的团队一样。要创建特洛伊木马MSI,您有意将发布标准操作排除在安装程序中,如PublishProduct Action。你需要确定自己明白自己的目标是什么以及你在做什么时放弃了这些,但有时候这是有道理的。

更新:OP指示目的是修补安装的MSI。

这真的不应该这样做。你应该用MSI和MSP做适当的更新/补丁。但是,你可以做什么。在我工作过的地方,他们有一种叫做“不是补丁,补丁”的东西。这非常丑陋,但确实有效。意识到你永远无法修复修补程序(除了重新应用修补程序),并且还可能进入修复MSI的情况,撤销修补程序,因此必须重新应用修补程序。当然,在添加/删除程序中不会卸载它的修补程序或版本化工件。

所以是的,它可以做到,但我真的不建议你这样做。我只在该工作中“支持”它,因为其他人将其投入使用,并且业务领域已经习惯了它作为(假)服务模式。