从MSI文件上下文菜单中删除安装/修复选项

时间:2013-11-19 09:52:49

标签: installer install windows-installer installshield

我创建了一个安装程序,当您右键单击“控制面板”的“添加/删除程序”中的程序名称时,该安装程序仅为您提供卸载选项。

然而,问题是:

1)如果在安装程序后右键单击msi,它会显示上下文菜单,为您提供安装/修复选项......

2)如果双击exe,它还会提示您使用“更改/修复”选项进行维护对话框。

我的问题是如何禁用这些功能/选项?在exe文件中包装msi不是我们的选择。

我调查了一个与我非常相似的问题: Remove repair option screen from MSI installer 但似乎无法弄清楚。

对于#2,我在这里找到了答案: http://justinyue.wordpress.com/2008/12/16/how-to-skip-the-maintainancetype-dialog-in-basic-msi-project/

我刚刚跳过了维护类型对话框。还需要#1的答案。

2 个答案:

答案 0 :(得分:2)

不要试图解决#1。要做到这一点,你必须打破相关机器上所有.msi文件的注册,并且最终用户不应该忍受破坏他们机器的应用程序。

对于#2,您可以调整自己的对话框或对话框序列,以提供所需的维护体验(基本MSI项目中的InstallUISequenceControlEvent条目; OnFirstUIBefore / {{您提到的基于InstallScript的UI中的代码)。请注意,如果行为与他们的期望不符,那么重大更改可能会使您的用户感到困惑,但只是删除“修复”并不是太大。

但为什么不修理修复?

答案 1 :(得分:0)

我确信您可以提出类型19错误CA或启动条件,以便在进行修复时阻止安装。一些基于属性的条件应该可以解决问题。

但真正的问题是,为什么?我只能想象你正试图掩盖安装程序中的根本问题。 “修复”不是修复可以被调用的唯一方法。您可以从命令运行它,也可以通过快捷方式或COM激活来触发它。

真正的解决方法是解决您的修复无法正常工作。这通常是由于有人不理解属性不会持久存在,因此在修复后它们会变得无效。