簡體   English   中英

InstallShield與.NET 4.5嵌套安裝

[英]InstallShield with .NET 4.5 nested installation

我的安裝程序需要重新分發.NET框架,但我不想有一個setup.exe包裝器,所以如果最終用戶機器還沒有它,我已經編寫了一個自定義操作來啟動.NET的Web安裝程序。 這適用於.NET 4.0和.NET 3.5,但對於.NET 4.5,.NET安裝程序報告“等待另一個安裝完成”並失敗 - 如果我的自定義操作處於Exec序列中,則此錯誤消息將是正確的,但是我特意在UI序列中盡早放置它以允許嵌套安裝。

完全相同的InstallShield配置/代碼適用於.NET 3.5和.NET 4.0,但在.NET 4.5中失敗,我正在使用Microsoft的標准Web安裝程序: http//www.microsoft.com/en-ca/download /details.aspx?id=30653

有誰知道這個問題的任何解決方案或解決方法?

這是我的自定義操作的代碼:

if ( hasDotNET45 = FALSE ) then
    MessageBox( "Missing .NET 4.5 framework!", INFORMATION );
    LAAW_SHELLEXECUTEVERB = "runas";
    LaunchApplication( szSupportDir^"\\dotNetFx45_Full_setup.exe", "", "", SW_SHOWNORMAL, 100000, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_WAIT_INCL_CHILD );
    Delay( 333 );
endif;

我很驚訝.Net 4和3.5甚至可以像這樣工作; 啟動可能在MSI安裝程序中使用MSI作為自定義操作的安裝程序是一個壞主意。

如果要確保存在.Net4.5(或任何其他軟件),則需要在啟動安裝程序之前對其進行鏈接, 以及在Installshield中設置/功能先決條件,或者使用LaunchCondition表以防止安裝程序繼續環境不符合要求。

解決方案是首先使用以下命令提取.NET 4.5安裝程序可執行文件的內容: dotnetfx45_full_x86_x64.exe / x

然后我可以在我的UI序列中使用自定義操作來調用.NET安裝程序的.MSI版本(沒有它的setup.exe包裝器!)

msiexec.exe / i netfx_Full_x64.msi EXTUI = 1 / l * v“Install.log”

這完全解決了我原來的問題。

暫無
暫無

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

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