繁体   English   中英

如何在WIX中以静默模式执行自定义操作?

[英]How to execute the custom action in silent mode in wix?

我正在尝试在wix中卸载安装程序时执行自定义操作。它工作正常,但在自定义操作时显示了cmd提示的初始屏幕。最近我尝试使用CAQuietExec,但无法uininstall安装程序并给出错误。 (CAQuietExec:错误0x80070057:无法获取命令行数据)。

我正在使用的命令是:

<Fragment>
<Property Id="ModifyOutlookRegInitSign_14" Value="&quot;[SystemFolder]reg.exe&quot; ADD &quot;HKCU\SOFTWARE\Microsoft\Office\14.0\Outlook\Security&quot; /v InitSign /t REG_DWORD /d 0 /f"/>
    <CustomAction Id="ModifyOutlookRegInitSign_14" BinaryKey="WixCA" DllEntry="CAQuietExec"
                Execute="deferred" Return="check" />
    <InstallExecuteSequence>
      <Custom Action="ModifyOutlookRegInitSign_14" Before="InstallFinalize"></Custom>
    </InstallExecuteSequence>

  </Fragment>

如果是立即自定义操作,则包含命令行作为值的属性名称必须具有Id="QtExecCmdLine" 有关其他类型的自定义操作,请阅读“ 安静执行自定义操作”

在我看来,您正在尝试在卸载过程中更新HKCU。 这可能是因为Windows Installer本身不支持此功能。

但是,您提出的解决方案缺少多种方式。 主要是它不支持回滚,也不支持清理其他用户配置文件。

此注册表项是否必须在HKCU中实施? 可以在HKLM中实施吗?

我创建了一个自定义操作来像这样静默地杀死一个进程:

<!-- WixQuietExecCmdLine specify the cmd to be executed -->
<Property Id="WixQuietExecCmdLine" Value='"[WindowsFolder]System32\TaskKill.exe" /F /T /IM MyApp.exe'/>

<!-- From WiX v3.10, use WixQuietExec -->
<CustomAction Id="MyAppTaskKill" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="ignore"/>

<!-- trigger the custom action -->
<InstallExecuteSequence>
    <Custom Action='MyAppTaskKill' Before='InstallValidate'></Custom>  
</InstallExecuteSequence>

您可以在此处获得有关可能的配置组合的更多信息: http : //wixtoolset.org/documentation/manual/v3/customactions/qtexec.html

将您的自定义操作包装在ID为WixQuietExecCmd的Property周围

<Property Id="WixQuietExecCmdLine" Value="command line to run"/>

WiX属性元素

WiX安静执行自定义操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM