Самораспаковывающийся установщик 7zip стирает файлы до завершения установки

Мы создали новый установщик, который работает очень хорошо, используя 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 (около 7/8 от Филлисс), но это кажется скрипучим, Это действительно единственный способ заставить эту работу?

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>

Надеюсь, что это поможет вам найти источник вашей проблемы. Вы также можете проверить, используете ли вы самую последнюю версию SFX-модуля 7z.

Работает для меня, когда я опускаю Удалить:

;!@Install@!UTF-8!
Title="My Installer"
InstallPath="%temp%\\Temp_Installation"
RunProgram="setup.exe"
;!@InstallEnd@!
Другие вопросы по тегам