6

我为我的应用程序的 P&D 创建了一个标准 MSI 安装程序,它使用以下组件:

  • 作为 Windows 服务托管的 WCF 服务。
  • 与该服务通信的 GUI 应用程序。
  • 一个外壳扩展 Dll。

安装程序工作得很好,没有任何问题。当用户尝试使用 MSI 安装程序在现有应用程序上再次安装应用程序时,会出现此问题。目前,它提供了带有“修复”和“删除”两个选项的屏幕。这两个选项都不起作用并破坏了安装的应用程序。

我想要的是跳过此屏幕并显示类似于 MessageBox 的内容,说明应用程序已安装。因为我不需要向用户提供修复选项。至少我应该能够隐藏或以某种方式不提供修复选项。

对我有什么帮助或建议吗?所以,到目前为止,我已经尝试了很多东西,比如使用 ORCA 添加 NotRepair 属性等。但它们都没有奏效。

4

6 回答 6

5

查看 MSDN 上的Windows Installer Guide了解这两个属性:

于 2009-05-04T18:25:18.963 回答
4

接受的答案为没有很多安装经验的人留下了一些东西。

为此,您必须在 .NET 安装版本创建 .MSI 后对其进行编辑。微软支持的简单方法是Orca。您可以从.NET Framework SDK安装 Orca 。如果您认为您已经拥有 SDK,但开始菜单中没有 Orca,请在您的机器上搜索“Orca.exe”或“Orca.msi”。

安装 Orca 后,只需运行它。使用 Orca UI 打开您的 MSI 文件。在左侧,您将看到“表格”列表。选择表属性。在右侧窗格中,右键单击并添加。添加一个名为ARPNOREPAIR. 确保将值设置为空字符串""ARPNOMODIFY如果您不希望更改选项显示在程序的窗口中,还可以添加一个节点。

于 2011-06-24T18:57:17.050 回答
2

我同意 Henrik 的观点,但在我的情况下是最后一步

使用 Dialog_ 'MaintenanceForm' 和 Control 'RepairRadioGroup' 查找并删除条目。

导致 2814 错误。
所以我的建议是:让 RepairRadioGroup 不可见。为此,只需将其属性设置为 0

更新控件集属性 = 0 WHERE 控件 = 'RepairRadioGroup'

于 2014-06-11T08:02:53.520 回答
2

意识到这个问题已经有好几年了,但我想像我这样的人仍然会遇到这个问题。Sumeet 在对已接受解决方案的评论中提到,用户仍然可以使用显示的“修复”和“删除”这两个选项进入屏幕。

事实上,用户可以通过三种不同的方式访问应用程序的安装程序。

一:正如已经回答的 ARPNOMODIFY 和 ARPNOREPAIR 仅修复了添加删除程序中的问题,可以使用“Orca.exe”完成。

二:通过右键单击 msi 的安装程序。可悲的是,如果不对所有 msi 文件在计算机范围内进行调整,似乎就无法避免这两种选择。

三:通过双击安装程序,如果已经安装,则会出现一个带有单选按钮“修复”和“删除”的屏幕。

在下面找到了解决第三个访问点的巧妙改编,在这里有些重写:http: //us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-帮助 49010162.html。它以图形方式删除了允许修复选项的选择。我要感谢 Paul Brun。

  1. 使用 Orca.exe 打开 msi 文件。
  2. 进入表“属性”。
  3. 添加键 'ARPNOMODIFY' 和 value 1
  4. 添加键 'ARPNOREPAIR' 和 value 1
  5. 将属性“MaintenanceForm_Action”的值从 更改RepairRemove
  6. 进入表“控制”。
  7. 找到带有 Dialog_'MaintenanceForm' 和 Control 'BodyText' 的条目。
  8. 将“文本”属性更改为: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. 找到带有 Dialog_'MaintenanceForm' 和 Control 'RepairRadioGroup' 的条目。
  10. 将“Control_Next”属性从 更改CancelButtonFinishButton
  11. 使用 Dialog_ 'MaintenanceForm' 和 Control 'RepairRadioGroup' 查找并删除条目。

与执行上述步骤相关的可能是通过仅执行一次步骤获得的转换来自动调整 msi 的过程。可以在此处找到有关如何执行此操作的更多信息:使用 Orca 从命令行编辑 msi?

于 2013-03-19T08:52:46.337 回答
1

如果你通过 installshield 来编辑你的 ISM 文件,这会容易得多。要从添加/删除程序屏幕禁用Change和按钮,请将以下设置设置为选项卡 >导航窗格中的节点 > 导航窗格中的节点 >详细窗格中的部分RepairYesInstallation DesignerInstallation InformationGeneral InformationAdd or Remove Programs

  1. Disable Change Button
  2. Disable Repair Button

在此处输入图像描述

要解决第二个问题,您可以简单地修改MaintenanceWelcomeinstallshield 的内置对话框屏幕。

  1. 将欢迎消息标签的文本更改为一些错误消息,例如“已安装此产品的另一个版本。安装无法继续。”
  2. 在单击Next按钮的行为中,只需添加EndDialog事件。将其执行条件设置为1使其始终执行。将其设置ValueExit
  3. Next将按钮的文本更改为“完成”。
  4. 如果需要,禁用或隐藏Cancel按钮。

你都准备好了!

于 2017-05-09T12:08:12.800 回答
0

我将 setup.exe 和 MSI 封装在一个 EXE 文件中。单击哪个会提取文件并触发 Setup.exe。在那个 exe 中,我添加了一个代码来检查应用程序是否已经安装在机器中。如果安装了它,我会提示用户并退出。这样,如果应用程序已经安装,则永远不会启动 MSI,因此永远不会出现修复和删除屏幕。关于添加/删除屏幕中的更改按钮,我使用了“CheGueVerra”提供的解决方案。谢谢你。

于 2009-11-25T06:58:45.540 回答