7zip自解压安装程序在安装完成之前擦除文件

时间:2011-11-30 22:17:28

标签: installer wix 7zip self-extracting

我们使用Visual Studio和WIX创建了一个非常好的新安装程序。现在我正在尝试将其压缩并制作一个自解压安装程序以供分发。

我可以很好地创建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是

;!@Install@!UTF-8!
Title="My Title"
RunProgram="Setup.exe"
;!@InstallEnd@!

http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/3731985c-d9cc-4403-ab7d-992a0971f686有一个解决方法(Phylliss大约7/8下来),但这似乎很狡猾。这真的是让这项工作成功的唯一途径吗?

2 个答案:

答案 0 :(得分:2)

我不能立即通过你的样本告诉它有什么问题。但是,这是我用来构建7z自解压存档的方法,它运行良好,只有在安装完成后才删除文件。

配置文件:

;!@Install@!UTF-8!
Title="My Installer"
InstallPath="%temp%\\Temp_Installation"
RunProgram="setup.exe"
Delete="%temp%\\Temp_Installation"
;!@InstallEnd@!

创建脚本(NAnt):

<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模块。

答案 1 :(得分:0)

当我省略删除时,对我有用:

;!@Install@!UTF-8!
Title="My Installer"
InstallPath="%temp%\\Temp_Installation"
RunProgram="setup.exe"
;!@InstallEnd@!