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

Installation 从MSI文件上下文菜单中删除安装/修复选项,installation,windows-installer,installshield,Installation,Windows Installer,Installshield,我创建了一个安装程序,当您右键单击控制面板“添加/删除程序”中的程序名时,它只为您提供卸载选项 然而,问题是: 1)如果在安装程序后右键单击msi,它将显示上下文菜单,为您提供安装/修复选项 2)如果双击exe,它还会提示您一个带有更改/修复选项的维护对话框 我的问题是如何禁用这些功能/选项?在exe文件中包装msi不是我们的选择 我研究了一个与我非常相似的问题: 但似乎无法理解 对于#2,我在这里找到了答案: 我只是跳过了maintainancetype对话框。仍然需要一个答案。不要试图解决

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

然而,问题是:

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

2)如果双击exe,它还会提示您一个带有更改/修复选项的维护对话框

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

我研究了一个与我非常相似的问题: 但似乎无法理解

对于#2,我在这里找到了答案:

我只是跳过了maintainancetype对话框。仍然需要一个答案。

不要试图解决1。要做到这一点,您必须中断有关机器上所有
.msi
文件的注册,并且最终用户不应容忍应用程序破坏其机器

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


但是为什么不只是修复呢?

我相信,在进行修复时,您可能会遇到类型19错误CA或启动条件,从而阻止安装。一些基于属性的条件应该可以做到这一点

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


真正的解决办法是解决您的维修不起作用的问题。这通常是因为有些人不理解属性没有持久化,所以在修复后它们会被置空

谢谢你的回答。我当然不想更改用户的默认注册表信息。采用另一种方法,当用户点击msi文件上下文菜单上的“修复”时,您知道如何不运行安装程序吗?嗨,我知道我迟到了,但如何停止修复过程?用对话说?问一个新问题。