Как создать установщик, который устанавливает стороннюю программу установки (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.) А затем вам нужно пропустить его через , и экранирование кавычек может быть сложным. Не передавайте сам файл setup.exe в качестве аргумента. Чтобы увидеть, что в итоге будет пройдено, посмотрите журнал установки.

Ниже приведено краткое описание того, что вам нужно для комплекта, в основном полный код: (вам нужно будет придумать идентификаторы и указать пути к тому, что находится на вашей машине, очевидно).

<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&quot;fullpath-to-your-iss-file.iss&quot;/>
    </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>
Другие вопросы по тегам