从MSI安装程序中删除修复选项屏幕

时间:2009-05-04 11:32:55

标签: installer windows-installer option repair

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

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

安装程序工作得非常好,没有任何问题。当用户尝试使用MSI安装程序在现有应用程序上再次安装应用程序时,会出现此问题。目前,它提出了2个选项“修复”& “去掉”。这两个选项都不起作用并破坏了已安装的应用程序。

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

对我有任何帮助或建议?所以,到目前为止,我已经尝试了很多东西,比如使用ORCA添加NotRepair属性等等。但是没有一个能够工作。

6 个答案:

答案 0 :(得分:5)

在MSDN上查看 Windows Installer指南以获取这两个属性:

答案 1 :(得分:4)

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

为了做到这一点,你必须在.NET安装版本创建后编辑.MSI。 Microsoft支持的简单方法是Orca。您可以从.NET Framework SDK安装Orca。如果您认为已经拥有SDK,但在开始菜单中没有Orca,则在您的计算机上搜索“Orca.exe”或“Orca.msi”。

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

答案 2 :(得分:1)

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

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

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

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

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

在下面找到了这个简洁的适应性来解决第三个访问点,有点重写,在这里:http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html。它以图形方式删除了允许修复选项的选择。我要感谢保罗·布伦为此而感谢。

  1. 使用Orca.exe打开msi文件。
  2. 进入'Property'表。
  3. 使用值1添加密钥“ARPNOMODIFY”。
  4. 使用值1添加密钥“ARPNOREPAIR”。
  5. 将属性“MaintenanceForm_Action”的值从Repair更改为Remove
  6. 进入“控制”表。
  7. 使用Dialog_'MaintenanceForm'和Control'BodyText'找到该条目。
  8. 将“文字”属性更改为: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. 使用Dialog_'MaintenanceForm'和Control'VirnerRadioGroup'找到该条目。
  10. 将“Control_Next”属性从CancelButton更改为FinishButton
  11. 使用Dialog_'MaintenanceForm'和Control'VirnerRadioGroup'查找并删除条目。
  12. 与执行上述步骤相关的可能是自动执行使用仅执行一次步骤所获得的变换来调整msi的过程。有关如何执行此操作的详细信息,请访问:Use Orca to edit msi from command line?

答案 3 :(得分:1)

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

  

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

导致2814错误。
所以我的建议是:使RepairRadioGroup不可见。要做到这一点,只需设置它,s Attribute为0

  

UPDATE Con​​trol SET Attributes = 0 WHERE Con​​trol =' RepairRadioGroup'

答案 4 :(得分:1)

如果你通过installshield编辑你的ISM文件,今天就容易多了。要从“添加/删除程序”屏幕中停用ChangeRepair按钮,请将以下设置设置为Yes标签上的Installation Designer>导航窗格中的Installation Information节点>导航窗格中的General Information节点>详细信息窗格中的Add or Remove Programs部分

  1. Disable Change Button
  2. Disable Repair Button
  3. enter image description here

    要处理第二个问题,您只需修改installshield的内置MaintenanceWelcome对话框屏幕即可。

    1. 将欢迎邮件标签的文本更改为某些错误消息,例如“此产品的另一个版本已经安装。安装无法继续。”
    2. 点击Next按钮时的行为只需添加EndDialog个活动。将其执行条件设置为1,以便始终执行。将其Value设置为Exit
    3. Next按钮的文本更改为“完成”。
    4. 如果需要,请禁用或隐藏Cancel按钮。
    5. 你们都准备好了!

答案 5 :(得分:0)

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