簡體   English   中英

Wix自定義動作序列

[英]Wix Custom Action Sequence

我試圖安裝到我的軟件上,並且該軟件具有一些先決條件。 我為他們制作了Bootstrapper wix,嘗試單獨運行而不是在Main Wix安裝程序中運行似乎很好。 當我嘗試附加從Wix安裝程序中的Bootstrapper獲得的EXE時,我開始出現故障。 前提條件Bootstrapper具有.Net和MS C ++,問題似乎出在我的Wix安裝程序調用前提條件,並且恰好在C ++安裝時它中斷了。 但是,如果我嘗試單獨安裝前提條件EXE,則效果很好。 在兩種情況下,我都嘗試將其稱為文件和二進制文件。 這是我的稱呼:

<!--  <Binary Id="SQl_Insta.exe" SourceFile="Prerequisites\bin\Debug\Prerequisites.exe"/>
-->
<Property Id="prerequisites_insta" Value="command line to run"/>
<CustomAction Id="prerequisites_insta" FileKey="prerequist_ID" ExeCommand="-install"
  Impersonate="yes" Return="check" />

<!--
<CustomAction Id="prerequisites_insta" Directory="Setup"
  Execute="deferred" Impersonate="no" Return="ignore"
ExeCommand="[Setup]Prerequisites.exe -install" />-->

我想要的順序是將文件復制到程序文件后安裝它們

<InstallExecuteSequence>

<Custom Action="prerequisites_insta"  Before="InstallFiles">Not Installed</Custom>

</InstallExecuteSequence>

錯誤 :

[18F0:04C0] [2018-03-13T14:01:04] w348:應用程序請求重試軟件包:vcredist_x64.exe,遇到錯誤:0x80070652。 正在重試... [173C:176C] [2018-03-13T14:01:07] i301:應用執行包:vcredist_x64.exe,操作:安裝,路徑:C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe,參數:““ C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe” / qb / norestart'[173C:176C] [2018-03-13T14:01:11] e000:錯誤0x80070652:進程返回錯誤:0x652 [ 173C:176C] [2018-03-13T14:01:11] e000:錯誤0x80070652:無法執行EXE軟件包。 [18F0:04C0] [2018-03-13T14:01:11] e000:錯誤0x80070652:無法配置每台計算機EXE軟件包。 [18F0:04C0] [2018-03-13T14:01:11] w348:應用程序請求重試軟件包:vcredist_x64.exe,遇到錯誤:0x80070652。 正在重試... [173C:176C] [2018-03-13T14:01:14] i301:應用執行程序包:vcredist_x64.exe,操作:安裝,路徑:C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe,參數:““ C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe” / qb / norestart'[173C:176C] [2018-03-13T14:01:17] e000:錯誤0x80070652:進程返回錯誤:0x652 [ 173C:176C] [2018-03-13T14:01:17] e000:錯誤0x80070652:無法執行EXE軟件包。 [18F0:04C0] [2018-03-13T14:01:17] e000:錯誤0x80070652:無法配置每台計算機EXE軟件包。 [18F0:04C0] [2018-03-13T14:01:17] w348:應用程序請求重試軟件包:vcredist_x64.exe,遇到錯誤:0x80070652。 正在重試... [173C:176C] [2018-03-13T14:01:20] i301:應用執行包:vcredist_x64.exe,操作:安裝,路徑:C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe,參數:““ C:\\ ProgramData \\ Package
Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ vcredist_x64.exe“ / qb / norestart'[173C:176C] [2018-03-13T14:01:24] e000:錯誤0x80070652:進程返回錯誤:0x652 [173C:176C] [2018-03-13T14 :01:24] e000:錯誤0x80070652:無法執行EXE軟件包。[18F0:04C0] [2018-03-13T14:01:24] e000:錯誤0x80070652:無法配置每台計算機EXE軟件包。[18F0:04C0 ] [2018-03-13T14:01:24] i319:已應用執行包:vcredist_x64.exe,結果:0x80070652,重啟:無[18F0:04C0] [2018-03-13T14:01:24] e000:錯誤0x80070652:無法執行EXE軟件包。[173C:176C] [2018-03-13T14:01:24] i351:從路徑:C:\\ ProgramData \\ Package Cache \\ 13674C43652B941DAFD2049989AFCE63CB7C517B \\ [173C:176C]中刪除緩存的軟件包:vcredist_x64.exe [2018-03-13T14:01:24] i351:從路徑:C:\\ ProgramData \\ Package Cache \\ 89F86F9522DC7A8A965FACCE839ABB790A285A63 \\ [173C:176C]刪除緩存的包:NDP452_KB2901907_x86_x64_AllOS_ENU.exe [[173C:176C]] [2018-03-13T14:01:24: i351:從路徑:C:\\ Pr中刪除緩存的軟件包:dotnetfx35.exe ogramData \\ Package Cache \\ 3DCE66BAE0DD71284AC7A971BAED07030A186918 \\
[173C:176C] [2018-03-13T14:01:24] i372:會話結束,注冊密鑰:SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall {a94dd5f5-3343-45c7- ab0b-17c3ba9e8644},恢復:無,重新啟動:無,禁用簡歷:否[173C:176C] [2018-03-13T14:01:24] i330:已刪除捆綁包依賴提供程序:{a94dd5f5-3343-45c7-ab0b-17c3ba9e8644} [173C:176C] [2018-03 -13T14:01:24] i352:從路徑:C:\\ ProgramData \\ Package Cache \\ {a94dd5f5-3343-45c7-ab0b-17c3ba9e8644} \\ [173C]中刪除緩存的包:{a94dd5f5- 3​​343-45c7-ab0b-17c3ba9e8644} :176C] [2018-03-13T14:01:24] i371:更新會話,注冊密鑰:SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall {a94dd5f5-3343-45c7- ab0b-17c3ba9e8644},恢復:無,已重新啟動:否,禁用簡歷:否[18F0:04C0] [2018-03-13T14:01:24] i399:應用完成,結果:0x80070652,重啟:無,ba請求重啟:否

該錯誤0x80070652是“另一安裝正在進行中”。 您不能運行遞歸MSI安裝或同時進行MSI安裝-您的MSI無法調用另一個基於MSI的安裝,也不能同時運行兩個基於MSI的安裝。 從(部分?)日志中很難分辨同時發生了哪些基於MSI的安裝。

還不清楚您是否已經制作了WiX Burn捆綁軟件 如果您這樣做了,那么您已經有了解決方案: 通過Burn bootstrap依次運行MSI文件,而不是使用自定義操作並行或遞歸運行MSI文件


正如Phil所說,Windows Installer一次只能運行一個InstallExecuteSequence 每個MSI文件中都有一個這樣的序列-每次觸發一個互斥體時都會設置一個互斥體 這樣可以防止其他MSI文件開始另一個這樣的序列,直到第一個完成為止。

用技術術語來說,這樣做是為了允許對系統所做的所有更改都可以按照數據庫事務中發生的事情作為“變更事務”回滾。


使用WiX Burn引導程序的關鍵原因之一就是避免了這種技術性MSI問題。 還有其他原因,例如允許啟動EXE文件和非MSI格式的其他可安裝文件。 這是一個示例Burn項目: https : //github.com/frederiksen/Classic-WiX-Burn-Theme 並且: 官方Burn文檔

暫無
暫無

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

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