Я хочу создать MSI, который в процессе установки развернет себя вместе с содержащимися в нем файлами / компонентами в TargetDir.
Таким образом, MyApp.msi содержит MyApp.exe и MyAppBootstrapperEmpty.exe (без ресурсов) в своей таблице файлов.
Пользователь запускает MyAppBootstrapperPackaged.exe (содержащий MyApp.msi в качестве ресурса, полученного из Интернета, электронной почты или иным способом). MyAppBootStrapperPackaged.exe извлекает MyApp.msi во временную папку и выполняет его через msiexec.exe.
После завершения процесса msiexec.exe я хочу, чтобы MyApp.msi, MyBootstrapperEmpty.exe (И MyApp.exe в папке% ProgramFiles% \ MyApp, чтобы при запуске MyApp.exe был обеспечен доступ к MyApp.msi (для создания нижеуказанный упакованный контент).
MyAppBootstrapper * .exe может попытаться скопировать MyApp.msi в папку% ProgramFiles% \ MyApp, но для этого потребуется повышение прав и не позволит удалить его с помощью процесса удаления установщика Windows (из раздела «Установка и удаление программ» или другим способом). ), который следует сохранить.
Очевидно (я думаю, это очевидно - я ошибаюсь?) Я не могу включить MSI в качестве файла в мой Media / CAB (сценарий с курицей и яйцом), поэтому я считаю, что это должно быть сделано с помощью Custom Action перед процессом установки добавьте исходный MSI в Media / CAB DB MSI и соответствующую запись в таблице файлов на лету. Можно ли это сделать, и если да, то как?
Подумайте о модели распространения контента, в которой файлы контента распространяются только вместе с Приложением. Контент создается конечным пользователем через приложение во время выполнения и упаковывается в распространяемый EXE-файл, который включает в себя как приложение, так и контент.
Установщик MyApp должен оставаться MSI, но может выполняться Bootstrapper EXE. Установленный MyApp.exe должен иметь доступ как к MyApp.msi, так и к EXE, который должен быть "собран" во время выполнения приложением из базового (пустого) MyAppBootstrapper.exe, который также установлен MSI, и содержимого, созданного приложением. конечный пользователь. MSI-ресурс EXE-файла должен совпадать с тем, который использовался для установки приложения, выполняющего упаковку среды выполнения.
WIX не устанавливается с MyApp.
Не может быть никаких сетевых зависимостей во время выполнения / упаковки (т. Е. Не может выполнить упаковку через веб-сервис - должно выполняться локально).
Я знаком (и использую) пользовательские действия (управляемые и неуправляемые, через DTF и т. Д.).