我試圖創建一個自己編寫的Windows應用程序的自解壓壓縮文件。我的應用程序使用最新的.Net 4.0,我想在SFX安裝程序中包含.Net安裝程序。但是,如果計算機需要安裝.Net框架並重新引導,它將無法正確恢復安裝我的應用程序。我通過對棧網站另SFX帖子看了看,但是他們都不是涉及.NET安裝程序作爲應用程序的先決條件問題。7zip的自解壓縮檔(SFX)和.Net安裝
我的項目產生4個文件: 「應用程序Installer.msi」 「setup.exe」 文件 「WindowsInstaller-KB893803-V2-x86.exe程序」 和 「dotNetFx40_Client_x86_x64.exe」(文件夾 「WindowsInstaller3_1」 中)(文件夾中「DotNetFX40Client」),我相信這些都是標準的。
我用7zip的創建SFX如下:
首先,使用7zip的所有文件壓縮成一個壓縮文件:
7z.exe a -r AppInstallFiles.7z *
接下來,我做的7zS二進制副本.sfx文件(用於創建自解壓安裝程序),我的配置文件和存檔。配置文件如下:
;[email protected]@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;[email protected]@!
我將它們複製與行:
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe
安裝程序完美的作品已經具備.NET 4.0我的問題的計算機上出現哪些沒有計算機上有.Net框架 - 我運行SFX,它將所有內容提取到臨時目錄。然後,當setup.exe識別出該計算機沒有.Net 4.0時,它會調用.Net安裝程序。這提取到它自己的臨時目錄並開始安裝。完成後,它會提示重新啓動。點擊「否」退出整個安裝。點擊「是」重新啓動計算機,並重新登錄時出現錯誤:「嘗試安裝MyApp時發生錯誤」,詳細信息爲「無法找到應用程序文件」App Installer.msi'
看起來問題是,當安裝手離開到.NET安裝程序和.NET安裝程序重新啓動,包含我的應用程序安裝文件的臨時目錄中刪除。我試圖從SETUP.EXE切換到使用「應用Installer.msi」然而,這隻會導致msi報告,計算機沒有.net並提示網絡下載。因爲我可能在離線情況下安裝該應用程序,所以這對我不起作用。
有沒有其他人試過以包括.NET安裝程序在7zip的SFX之前,如果是他們是如何解決的呢?我寧願如果可能的話繼續使用7zip,但如果需要的話可以查看其他工具。
因此,作爲臨時解決方案,我創建了一個批處理腳本使用/ norestart標誌調用兩個更新(WindowsInstaller和dotNetFx40_Client_x86_x64)。這並不理想,因爲a)如果已安裝.Net安裝程序步驟,此方法不會自動跳過,並且b)在使用應用程序之前,我無法傳遞一條消息通知用戶重新啓動。它還創建了一個cmd窗口,最好避免這個窗口。 – 2012-07-13 13:51:49