[英]dotnetinstaller configuration to continue with MSI installation even if prerequisites fail
我有一個使用dotnetinstaller構建的 VC++ 應用程序的設置。 作為本機應用程序,VC++ 可再發行組件是先決條件。 然而,現在這些變化非常頻繁(每 6-8 周)。 這意味着我們發布了新版本的應用程序,但在客戶實際安裝我們的應用程序之前,更新版本的可再發行組件也已發布並安裝在客戶機器上。 結果是我們設置中的舊可再發行組件將無法安裝,因為存在較新的版本。 這反過來又會導致設置失敗,因此不會執行應用程序 MSI。
目前,解決方法是打開以管理員身份提升的命令提示符並使用正確的參數運行 msiexec。 我想為客戶找到更好的體驗。
VC++ 可再發行組件是作為必需的先決條件添加的。 這意味着required_install
屬性設置為true
。 這樣做的結果是,無法安裝先決條件意味着安裝失敗。 雖然allow_continue_on_error
和default_continue_on_error
設置為true
,用戶被告知失敗並且可以繼續其他先決條件,但最終設置失敗並且MSI執行沒有開始。
我嘗試通過將required_install
屬性設置為false
來使 VC++ 可再發行的可選先決條件。 然而,這會導致另一種不希望的行為。 如果缺少任何必需的先決條件,則會顯示先決條件對話框,我可以選中/取消選中可選的先決條件(如果我不想要它們,則跳過它們)。 但是,如果找到所有必需的先決條件並且僅缺少可選的先決條件,則安裝程序不會顯示先決條件對話框和 go 直接執行 MSI。
我需要一個選項來使這些先決條件成為可選,因為無法安裝它們不會停止 MSI 的執行; 但是,我確實希望用戶看到他們丟失了,如果是這樣,並且可以選擇安裝它們。
dotnetintaller 可以通過某種方式實現嗎?
似乎有一個安裝 VC++ 可再發行組件版本的鍵,即HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|ARM}
。 這記錄在這里: https://docs.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=msvc-160
但是,版本存儲在格式為v14.28.29913.00
的字符串中,如下所示: Minor、Major、Build 和 Revision 也有 DWORD 值。
使用 dotnetinstaller 的一種解決方案是使用installedcheckoperator
組合installedcheck
操作。 一個例子可以在這里找到。
dotnetinstaller 的最新版本3.1.415支持解析格式為v[version]
的字符串,例如v14.28.29913.00
,因此更容易檢查 VC++ 可再發行組件版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.