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

3
我们使用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 is

;!@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处)提到,但这似乎不太可靠。这是唯一让它工作的方法吗?


我遇到了同样的问题。在XP机器上,安装的一部分正常工作,但有时如果机器决定重新启动,则临时文件会消失。 - Sugrue
2个回答

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

感谢您的回答!我的测试表明,如果我切换到使用7zSD_ALL.sfx并在配置中添加InstallPath和Delete键,则无需批处理文件即可正常工作。 - MrPhilTX
现在它的工作不稳定。有时它能正常工作,而有时则不能。例如,同一个exe文件在一台电脑上可以运行,但在另一台电脑上却不能。这些文件似乎仍然会在使用之前被删除。我们正在Win 7下进行测试 - 我想知道旧版本的WindowsInstaller是否会让setup.exe运行更长时间。 - MrPhilTX

0

当我省略删除时,它对我有效:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接