Самораспаковывающийся установщик 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@!