2010-11-10 27 views
2

我需要在我的安装程序中设置启动条件,以防止用户直接运行MSI文件,除非它们正在运行卸载。 (所有其他类型的安装应该从引导程序运行,以确保满足所有前提条件。)我需要检查以确保卸载正在运行?

我需要检查什么条件?我尝试了REMOVE="ALL" OR BOOTSTRAPBOOTSTRAP是我的引导程序应用程序在启动MSI时在命令行中定义的属性),但这也触发了我不想要的修复安装。

+0

你试过'MaintenanceMode =“删除”'? – 2010-11-10 01:24:49

+0

MSI从控制面板(或直接)启动以进行删除安装时不起作用。 – RobH 2010-11-10 18:24:16

回答

0

据我所知,目前为止,似乎没有办法阻止直接启动MSI时运行修复安装,因此我必须将OR REINSTALL="ALL"添加到我的启动条件中。如果有人知道只有通过引导程序才能完成维修的方法,那么将会非常感谢您的解释。

+0

这将是公认的答案,除非事情出现,实际上做我想做的事情。 – RobH 2010-11-10 20:36:26

0

就我个人而言,我以这种不同的方式去做。我希望用户可以运行MSI而不是SETUP.EXE,因此我有意使用AppSearch和LaunchConditions复制MSI中的所有引导程序prereq检查。这样,如果他们要么跳过引导程序,要么以某种方式失败,我的MSI仍然可以解决问题。

我还遵循在我的条件下追加“或已安装”的做法,以便缺少先决条件不会妨碍卸载。

+0

这对一个简单的安装程序很好。但我的矿更复杂。它安装了一套程序,引导程序不仅要确保安装prereq,还必须收集所有信息,例如用户想要安装的信息(以便引导程序可以确定需要哪些前提条件)以及要安装什么的各种配置信息。除了卸载之外,我的安装程序**必须**通过引导程序。 – RobH 2010-11-10 03:19:55

+0

我发现它也适用于非常复杂的安装程序。我的典型引导程序有几十个COTS \ GOTS软件包,其中包含几千兆字节。我支持从单个可重用基线开始的多个产品,其中包含大约100个可能包含在产品中的包(25GB)。 – 2010-11-10 13:20:52

+0

就我而言,套件中的每个产品都有一组不同的prereq,我们不希望安装任何不需要的preq。由于安装程序无法启动另一个安装程序,因此该任务和用于从用户获取所有信息的GUI属于引导程序。 – RobH 2010-11-10 17:37:24

相关问题