[英]Wix Remove custom action fails
我試圖讓我的安裝程序在刪除應用程序時使用自定義操作來刪除計划任務。 創建“ CreateScheduledTask”的自定義操作可以正常運行,但是刪除失敗。
MSI (s) (B4:D8) [09:28:45:761]: Note: 1: 1721 2: RemoveScheduledTask 3: C:\Foobar\ 4: "C:\Windows\SysWOW64\SCHTASKS.EXE" /DELETE /TN "Automated Admin" /F
信息1721.此Windows Installer軟件包有問題。 無法完成該安裝所需的程序。 請與您的支持人員或包裝供應商聯系。 行動:RemoveScheduledTask,位置:C:\\ Foobar \\,命令:“ C:\\ Windows \\ SysWOW64 \\ SCHTASKS.EXE” / DELETE / TN“自動管理” / F MSI(s)(B4:44)[09:28: 45:777]:調用遠程自定義操作。 DLL:C:\\ Windows \\ Installer \\ MSIBB52.tmp,入口點:CommitIIS7ConfigTransaction
如果我運行,語法是正確的
"C:\Windows\SysWOW64\SCHTASKS.EXE" /DELETE /TN "Automated Admin" /F
從命令行可以正確刪除任務。
<!-- Code for setting the automated task-->
<CustomAction Id="CreateScheduledTask"
Return="check"
Impersonate="no"
Execute="deferred"
Directory="INSTALLLOCATION"
ExeCommand=""[SystemFolder]SCHTASKS.EXE" /CREATE /SC MINUTE /MO 15 /TN "Automated Admin" /TR "[AutomatedAdmin]FooBar.exe" /RU "NT Authority\System" /RP /RL HIGHEST" />
蠟碎片是
<CustomAction Id="RemoveScheduledTask"
Return="ignore"
Impersonate="no"
Execute="deferred"
Directory="INSTALLLOCATION"
ExeCommand=""[SystemFolder]SCHTASKS.EXE" /DELETE /TN "Automated Admin" /F" />
<InstallExecuteSequence>
<Custom Action="CreateScheduledTask" Before="InstallFinalize">NOT Installed</Custom>
<Custom Action="RemoveScheduledTask" Before="RemoveFiles">REMOVE="ALL"</Custom>
</InstallExecuteSequence>
您的代碼看起來正確,這是我的配置,可編譯為x86 .msi,並且已在Windows 8.1 x64 / x86和Windows Server 2008r2 x64上進行了測試。 將UAC設置為默認並禁用。 (.msi將提示輸入管理員權限)
<CustomAction Id="TaskDelete" Return="ignore" Execute="deferred" Directory="TARGETDIR" Impersonate="no"
ExeCommand="SCHTASKS.EXE /DELETE /TN "My Client Service" /F" />
<CustomAction Id="TaskCreate" Return="check" Execute="deferred" Directory="TARGETDIR" Impersonate="no"
ExeCommand="SCHTASKS.EXE /CREATE /SC MINUTE /MO 20 /TN "My Client Service" /TR "sc.exe start My_Client_Service" /RU SYSTEM /RP /RL HIGHEST /F" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="My Company" >
...components...
</Directory>
</Directory>
</Directory>
<InstallExecuteSequence>
<!--Remove task on Uninstall or Upgrade-->
<Custom Action='TaskDelete' Before="TaskCreate">REMOVE="ALL"</Custom>
<!--Add task on Install or Upgrade-->
<Custom Action='TaskCreate' Before="InstallFinalize">(NOT Installed) OR UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.