簡體   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