簡體   English   中英

在WIX中的InstallValidate之前運行自定義操作

[英]run a custom action before InstallValidate in WIX

我有一個由wix創建的安裝,它安裝了幾個服務。 由於一些無法更改的原因,服務是通過自定義操作而不是WIX安裝的。 除非升級,然后安裝會出現FilesInUse對話框,否則安裝工作正常。 我想通過自定義操作自行處理正在使用的文件。

有什么方法可以在InstallValidate之前運行自定義操作或禁用FilesInUse對話框? 我正在使用通用的WIX UI。

我嘗試將其添加到InstallUIsequence,InstallExecutionSequence(在InstallValidate之前)並禁用重新啟動管理器控件。 什么都沒用..(也許我在其中一個序列中添加了錯誤)

我的自定義操作:

<CustomAction Id="StopServices"
              BinaryKey="CustomActionsDLL"
              DllEntry="StopServices"
              Execute="immediate"
              Return="check"/>

有什么建議么?

您需要使用自定義操作而不是內置的WiX / MSI功能來安裝服務並不意味着您無法使用WiX ServiceControl停止服務。 如果Windows Installer看到該服務將被ServiceControl停止,則它將不會在InstallValidate時調用FilesInUse。 如果您的服務在某些方面有所不同,則可能無法正常工作-例如,共享公用Dll的子進程可能會導致FilesInUse對話框。 我假設您已經查看了詳細的日志,並看到了正在使用的進程和文件。

您的自定義操作的問題在於,它是您的代碼,盡管可能很好,但事實並非如此。 另外,即時自定義操作的問題在於它們沒有提升,並且可能無法停止服務,那么您的代碼是否檢查ControlService結果等等?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM