Как создать установщик, который устанавливает стороннюю программу установки (exe) и находит пользовательские файлы в том же каталоге?
Я надеюсь, что это название имеет смысл и не вводит в заблуждение мою просьбу.
Я хочу развернуть Мое приложение как установочный файл, который требует сторонних зависимостей.
Цель: Windows 7/8
- Мое приложение (проект C#.NET)
- Сторонний инструмент (настройка.exe)
- [-] Дополнительно добавляет RegKeys в систему, в зависимости от выбранных параметров в мастере установки, которые потребуются позже для Моего приложения.
- [+] Поддерживает автоматическую установку (с аргументами)
setup.exe /S /D="C:\Program Files (x86)\3rd-Party"
Мое приложение должно храниться в том же каталоге, что и сторонний.
Таким образом, порядок должен быть тихим установить setup.exe, и после его завершения; Моя заявка должна быть расположена там же.
При желании программа установки может проверить, установлена ли уже сторонняя программа, но это необязательно, так как установка без вывода сообщений /S
не будет вносить какие-либо изменения или вызвать проблемы с оригиналом.
Мастер установки должен открыть следующие страницы:
Setup StartPage -> Licens agreement -> Choose installion path -> Progress -> Finish.
Выбор установки должен указывать на переменную, которая будет использоваться для автоматической установки стороннего приложения и Моего приложения.
Что вы рекомендуете использовать в этом случае? (пожалуйста, только бесплатные решения)
Я бы кратко рассмотрел Inno-Setup и WiX, но они показались немного излишними для этой мелочи.
Кроме того, я хочу отметить, что у меня нет опыта работы с языками сценариев настроек. (постоянная времени)
1 ответ
Вам все еще нужно это? С WiX это было бы довольно просто: вам нужно сделать два проекта: MSI, который упаковывает ваши дополнительные файлы, а затем поместить этот MSI и существующий файл setup.exe в пакет WiX.
Передача аргументов в файл setup.exe для автоматической установки может быть выполнена, но сначала нужно сгенерировать файл ответов. (запустите программу установки с помощью /s /r, а затем найдите файл setup.iss, обычно в C:\Windows.) А затем вам нужно пропустить его через
Ниже приведено краткое описание того, что вам нужно для комплекта, в основном полный код: (вам нужно будет придумать идентификаторы и указать пути к тому, что находится на вашей машине, очевидно).
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="some-cool-name-for-the-whole-thing"
Version="1.0"
UpgradeCode="your-guid-here">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
LicenseUrl=""
ShowVersion="yes"/>
</BootstrapperApplicationRef>
<Chain>
<ExePackage Id="some_id"
SourceFile="path-to-the-setup.exe">
<CommandLine InstallArgument="/s /f1"fullpath-to-your-iss-file.iss"/>
</ExePackage>
<MsiPackage Id="some-other-id-here"
SourceFile="path-to-the-MSI-you-made-for-your-app">
</MsiPackage>
</Chain>
</Bundle>
</Wix>
Для MSI, опять же, в основном полный план того, что вам нужно:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="name-of-your-app"
UpgradeCode="some-unique-constant-guid-across-versions">
<Package InstallerVersion="500"
Compressed="yes"<br>
InstallScope="PerMachine"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="my_app_install_dir" Name="My App" />
</Directory>
</Directory>
<ComponentGroup Id="the-component-group-id" Directory="my_app_install_dir">
<Component Id="some-other-id-name" Guid="{some-new-GUID}" >
<File Id="some-id-1-for-your-file" Source="path-to-your-file" KeyPath="yes" />
</Component>
<Component Id="some-other-id2-name" Guid="{some-new-GUID2}">
<File Id="some-id-2-for-your-another-file" Source="path-to-another-file" KeyPath="yes" />
</Component>
<!-- add more files as needed -->
</ComponentGroup>
<Feature Id="some-feature-id" Title="some-title" Level="1">
<ComponentGroupRef Id="the-component-group-id" />
</Feature>
</Product>
</Wix>