2011-11-30 93 views
2

我們製作了一個新的安裝程序,使用Visual Studio和WIX可以很好地工作。現在我試圖將其壓縮並製作一個用於分發的自解壓安裝程序。7zip自解壓安裝程序在安裝完成前擦除文件

我可以創建installer.exe就好了,它會運行。安裝程序啓動,但失敗。

我認爲這是因爲7zip exe在安裝程序有機會使用它們(我們正在運行setup.exe來啓動安裝程序)之前刪除這些文件。

我已經搜遍了各地,但找不到任何有關如何使這項工作的提示。我是否缺少7zip的選項?

創建行:

7z a myInstaller.7z installer/bin/release/* 
copy /b \program files\7-zip\7zsd.sfx config.txt myInstaller.exe 

CONFIG.TXT是

;[email protected]@!UTF-8! 
Title="My Title" 
RunProgram="Setup.exe" 
;[email protected]@! 

有上http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/3731985c-d9cc-4403-ab7d-992a0971f686一種變通方法(約7/8下降Phylliss),但似乎搖搖欲墜。這真的是做這項工作的唯一方法嗎?

+0

我打了同樣的問題。在XP機器上,安裝的一部分工作正常,但有時如果機器決定重新啓動,臨時文件就會消失。 – Sugrue

回答

1

我不能立即告訴你樣品有什麼問題。但是,這是我用來構建7z自解壓存檔的工具,它運行良好,僅在安裝結束後才刪除文件。

配置文件:

;[email protected]@!UTF-8! 
Title="My Installer" 
InstallPath="%temp%\\Temp_Installation" 
RunProgram="setup.exe" 
Delete="%temp%\\Temp_Installation" 
;[email protected]@! 

創建腳本(南特):

<exec program="${_7z.exe}" workingdir="${path}\SFX"> 
    <arg line="a -y -r ${path}\setup.7z" /> 
    <arg line="${paths.build.to7z}\*.*"/> 
</exec> 

<exec program="cmd.exe" verbose="true" workingdir="${path}\SFX"> 
    <arg value="/C" /> 
    <arg line="copy /b 7ZSD_All.sfx + ${config} + ${path}\setup.7z" /> 
    <arg file="${paths.build.sfx}\setup.exe"/> 
</exec> 

希望這可以幫助你找到你的問題的根源。你也可以檢查你是否使用最新版本的7z SFX模塊。

+0

感謝您的回答! 我的測試表明,如果我切換到使用7zSD_ALL.sfx並將InstallPath和Delete鍵添加到配置中,它將在沒有批處理文件的情況下運行。 – MrPhilTX

+0

而現在它不一致。有時它起作用,而其他的則不起作用。如同樣,同一個exe在一臺計算機上運行,​​而不是另一臺。這些文件在使用前似乎仍然被刪除。我們正在Win 7下進行測試 - 我懷疑舊的WindowsInstaller版本是否讓setup.exe運行時間更長。 – MrPhilTX

相關問題