簡體   English   中英

未安裝所選組件時,為什么MSI安裝程序成功?

[英]Why does MSI installer succeed when chosen component was not installed?

我有一個MSI安裝程序包,可強制用戶從可能要安裝的組件列表中進行選擇,例如“ Version 2018” /“ Version 2019” /“ Version 2020”。 所選組件將自己安裝在“ ProgramData”內的文件夾中,該文件夾通常可由系統上的每個管理員帳戶寫入。 但是,在最近的客戶支持中,此文件夾是由SYSTEM帳戶創建的。 可能是客戶的IT使用SYSTEM特權安裝了環境。

當安裝程序嘗試將文件放入此文件夾時,顯然會失敗。 問題是安裝程序會注意到缺少的權限,但仍然成功。

當無法安裝用戶選擇的組件(或任何其他必要組件)時,有什么方法可以強制MSI安裝程序中止/拋出錯誤?

您需要的是WiX / MSI的默認行為,如下所述。 沒有日志文件很難說是怎么回事。

看一下WiX File @ Vital屬性: https : //wixtoolset.org/documentation/manual/v3/xsd/wix/file.html

如果文件至關重要,則除非成功安裝文件,否則無法繼續安裝。 用戶將無法選擇忽略安裝此文件的錯誤。 如果發生錯誤,他們只能重試安裝文件或中止安裝。 除非使用-sfdvital開關(candle.exe)或SuppressFileDefaultVital屬性(.wixproj),否則默認值為“是”。

它將在Windows Installer文件表中設置基礎msidbFileAttributesVital位掩碼,如以下文檔所述:

https://docs.microsoft.com/zh-CN/windows/win32/msi/file-table

該文件對於准確運行其所屬組件至關重要。 如果使用msidbFileAttributesVital屬性的文件安裝失敗,則安裝將停止並回滾。 在這種情況下,安裝程序將顯示一個沒有忽略按鈕的對話框。 如果未設置此屬性,並且文件安裝失敗,則安裝程序將顯示一個帶有“忽略”按鈕的對話框。 在這種情況下,用戶可以選擇忽略安裝文件失敗並繼續。

暫無
暫無

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

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