Я пытаюсь создать самораспаковывающийся архив для приложения Windows, которое я написал. В моем приложении используется последняя версия .Net 4.0, и я хочу включить настройку .Net в установщик SFX. Однако, если компьютеру необходимо установить .Net framework и перезагрузиться, он не возобновит установку моего приложения должным образом. Я просмотрел другие сообщения о sfx на сайтах Stack, но ни в одном из них нет проблем, связанных с установщиком .Net в качестве предварительного условия для приложения.
Мой проект создает 4 файла: "App Installer.msi" "setup.exe" "WindowsInstaller-KB893803-v2-x86.exe" (в папке "WindowsInstaller3_1") и "dotNetFx40_Client_x86_x64.exe" (в папке "DotNetFX40Client") , все, что я считаю стандартным.
Я использую 7zip для создания SFX следующим образом:
Сначала используйте 7zip, чтобы сжать все файлы в один архив:
7z.exe a -r AppInstallFiles.7z *
Затем я делаю двоичную копию файла 7zS.sfx (используется для создания самораспаковывающегося установщика), моего файла конфигурации и архива. Файл конфигурации выглядит следующим образом:
;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;!@InstallEnd@!
И копирую их строкой:
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe
Программа установки отлично работает на компьютерах, на которых уже установлена .Net 4.0. Моя проблема возникает на компьютерах, на которых нет .Net Framework - я запускаю SFX, он извлекает все во временный каталог. Затем, когда setup.exe распознает, что на компьютере нет .Net 4.0, он вызывает программу установки .Net. Это извлекается в собственный временный каталог и начинается установка. По завершению предлагает перезагрузиться. Нажатие «Нет» завершает всю установку. Нажатие «Да» перезагружает компьютер, и при повторном входе в систему возникает ошибка: «Произошла ошибка при попытке установить MyApp» с подробностями «Не удалось найти файл приложения «App Installer.msi».
Похоже, что проблема заключается в том, что когда установщик передает установщику .Net и установщик .Net перезагружается, временный каталог, содержащий установочные файлы My App, удаляется. Я попытался переключиться с setup.exe на использование «App Installer.msi», однако это просто приводит к тому, что msi сообщает, что на компьютере нет .Net, и предлагает загрузку из Интернета. Поскольку я могу устанавливать приложение в автономном режиме, это не сработает для меня.
Кто-нибудь еще пытался включить установщик .Net раньше в 7zip SFX, и если да, то как они это решили? Я бы предпочел продолжать использовать 7zip, если это возможно, но при необходимости рассмотрю другие инструменты.