Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 删除“;更改“;及;“修理”;添加或删除程序中的按钮_Wix - Fatal编程技术网

Wix 删除“;更改“;及;“修理”;添加或删除程序中的按钮

Wix 删除“;更改“;及;“修理”;添加或删除程序中的按钮,wix,Wix,我已经创建了一个Wix安装程序,并将其打包到一个引导程序中 当我执行引导程序时,它会在注册表中创建以下条目: 当我运行引导程序时,它安装良好,当我运行添加/删除程序时,它显示“更改”按钮和“修复”按钮。我的要求是 我希望这两个按钮是一个“更改/修复”,就像在其他应用程序中一样 当我选择此按钮时,我希望我的引导程序(setup.exe)运行,而不是msi 这是我的代码区: <Property Id="EXTUNINSTALL" Value="0"/> <Property I

我已经创建了一个Wix安装程序,并将其打包到一个引导程序中

当我执行引导程序时,它会在注册表中创建以下条目:

当我运行引导程序时,它安装良好,当我运行添加/删除程序时,它显示“更改”按钮和“修复”按钮。我的要求是

  • 我希望这两个按钮是一个“更改/修复”,就像在其他应用程序中一样
  • 当我选择此按钮时,我希望我的引导程序(setup.exe)运行,而不是msi
这是我的代码区:

<Property Id="EXTUNINSTALL" Value="0"/>
<Property Id="UNINSTALLEXE" Value="msiexec.exe"/>

<!-- The Uninstall shortcut target executable & arguments-->
<CustomAction Id="SetUNINSTALLEXE_EXT" Property="UNINSTALLCMD"
                     Value="[INSTALLEREXEDIR][INSTALLEREXE]"/>
<CustomAction Id="SetUNINSTALLARG_EXT"
              Property="UNINSTALLARG"
              Value="/MAINTENANCE /SILENT="SGWLRPFCE"  
                     /LANG="[ProductLanguage]""/>
<CustomAction Id="SetSYSTEMARPCOMPONENT"
              Property="ARPSYSTEMCOMPONENT"
              Value="1"/>

<CustomAction Id="SetUNINSTALLARG"
              Property="UNINSTALLARG"
              Value="/x [ProductCode]"/>
<CustomAction Id="SetUNINSTALLEXE"
              Property="UNINSTALLCMD"
              Value="[SystemFolder]msiexec.exe"/>

<CustomAction Id="SetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION"
         Value="[MAININSTALLERFOLDER]" />

<InstallExecuteSequence>
  <RemoveExistingProducts Before="InstallInitialize" />
  <Custom Action="SetARPINSTALLLOCATION" After="CostFinalize"/>
  <Custom Action="SetUNINSTALLEXE_EXT"
          After="SetARPINSTALLLOCATION"><![CDATA[EXTUNINSTALL=1]]></Custom>
  <Custom Action="SetUNINSTALLARG_EXT"
          After="SetUNINSTALLEXE_EXT"><![CDATA[EXTUNINSTALL=1]]></Custom>
  <Custom Action="SetSYSTEMARPCOMPONENT"
          After="SetUNINSTALLARG_EXT"><![CDATA[EXTUNINSTALL=1]]></Custom>
  <Custom Action="SetUNINSTALLARG"
          After="SetSYSTEMARPCOMPONENT"><![CDATA[EXTUNINSTALL=0]]></Custom>
  <Custom Action="SetUNINSTALLEXE"
          After="SetUNINSTALLARG"><![CDATA[EXTUNINSTALL=0]]></Custom>
</InstallExecuteSequence>

以下是NSIS的一些注册表项示例。应该会给你指引正确的方向

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2 "NoModify" 1
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2 "NoRepair" 1
您可以在wix中设置和属性,这将在“添加/删除程序”列表中禁用产品的“更改”和“修复”选项。(这实际上相当于leppie的答案,但最好使用Windows Installer属性,而不是直接入侵注册表。)


根据@Wim Coenen 要禁用删除“添加或删除程序”中的“更改”和“修复”按钮,请设置以下属性

ARPNOREPAIRarpnodify

这是禁用修复和升级选项的示例代码


问题第一部分的建议:

“我希望这两个按钮像在其他应用程序中一样成为一个“更改/修复”

我正在运行Windows 7,唯一接近此选项的是一些应用程序合并了“卸载/更改”

要完成一个按钮(存在于Wix 3.7中)“卸载/更改”而不是单独的“卸载”和“更改”,必须按如下所示调整捆绑标签

<Bundle ...
        DisableModify="button">


您好,谢谢您的快速回复。我会试试这个“NoModify”和“NoRepair”。同时,这并没有完成我的核心要求。当我选择删除按钮时,我希望启动程序(setup.exe)代替msiexec运行。如何做到这一点?我能够在安装完成的系统的文件夹“C:\Documents and Settings\All Users\Application Data\Installations\{27161ACE-7BDE-44a2-862D-A8158FCB9201}”中看到setup.exe。tvksHi尝试插入这两个“NoModify”和“NoRepair”。没用。没有变化(关于tvkshi wcoenen,我的要求不仅是在添加/删除程序中禁用修改和修复,而且还要使删除按钮显示为更改/删除。当我单击此按钮时,我希望我的setup.exe能够工作。Thanx用于您的响应。BR.,tvkshi这在技术上是正确的。属性必须设置为除s之外的其他属性。)我真的习惯于在属性表中看到1,而不看到其他文本,这可能是因为InstallShield在使用WiX之前这么多年都是这样编写的。