Самораспаковывающийся архив 7zip (SFX )и установщик.Net

Я пытаюсь создать самораспаковывающийся архив для приложения 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, если это возможно, но при необходимости рассмотрю другие инструменты.

5
задан L.J. 12 July 2012 в 19:57
поделиться