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


person MrPhilTX    schedule 30.11.2011    source источник
comment
Я сталкиваюсь с той же проблемой. На машинах XP часть установки работает нормально, но иногда временные файлы исчезают, если машина решает перезагрузиться.   -  person Sugrue    schedule 20.09.2012


Ответы (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.

person Yan Sklyarenko    schedule 01.12.2011
comment
Спасибо за Ваш ответ! Мое тестирование показало, что если я переключился на использование 7zSD_ALL.sfx И добавил в конфиг ключи InstallPath и Delete, он работал без батника. - person MrPhilTX; 01.12.2011
comment
И теперь он работает не стабильно. Иногда это работает, а другие не очень. То есть один и тот же exe работает на одном компе, а не на другом. Файлы по-прежнему удаляются до того, как их можно будет использовать. Мы тестируем под Win 7 - интересно, более старые версии WindowsInstaller заставляют setup.exe работать дольше. - person MrPhilTX; 01.12.2011

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

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