Настройка WIX с пользовательским вводом - PullRequest
1 голос
/ 05 ноября 2019

Я уже давно борюсь с WIX. Я хочу, чтобы моя программа была установлена ​​в месте, определенном пользователем, установите службу и запустите программу после установки.

Сначала мой MSI-пакет не запрашивает путь установки.

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="Test" />
  </Directory>
</Directory>

Может кто-нибудь сказать мне, как подсказать экран с измененным путем установки?

Во-вторых, когда мой сервис будет остановлен, возникает ошибка, которая говорит, что я пропускаю некоторые разрешения:

<File Id="FILE_Service" Source="$(var.Service.TargetPath)" />
    <ServiceInstall Id="INSTALL_Service"
                    Name="Servcie"
                    Description=""
                    Start="auto"
                    ErrorControl="normal"
                    Type="ownProcess"/>

    <ServiceControl Id="CONTROL_Service"
                          Name="Servcie"
                          Start="install"
                          Stop="both"
                          Remove="uninstall"
                          Wait="yes" />

Может кто-нибудь сказать мне, как запустить мой сервис с правами администратора?

В-третьих, установленный пакет содержит только один EXE-файл, на который нет ссылок. Может кто-нибудь сказать мне, как заставить WIX искать ссылки и устанавливать их?

1 Ответ

2 голосов
/ 06 ноября 2019

Учебное пособие по WiX : Здесь немного. Вы должны попробовать учебник по WiX: https://www.firegiant.com/wix/tutorial/

Ссылки : Вот мой Wi-Fi совет по быстрому старту - различные ресурсы и советы по работе с WiX и развертыванию в целом.

Обратите внимание, что существуют альтернативные средства развертывания и создания пакетов , которые могут помочь вам сделать настройки быстрее и надежнееесли у вас мало опыта работы с MSI и настройками.


Конкретный ответ : Вот несколько попыток ответить на ваши конкретные вопросы:

  • Настраиваемый каталог установки (немного вниз по странице). Вы по существу устанавливаете атрибут ConfigurableDirectory для элемента функции, чтобы пользователь мог выбрать пользовательский каталог установки (вы попадаете в диалоговое окно, где вы можете изменить путь установки, выбрав "Custom" установка ):

    <Feature Id="FeatureDirectory" Title="FeatureDirectory" ConfigurableDirectory="MYCUSTOMDIR">
         <!-- your stuff here -->
    </Feature>
    
  • Каталог установки основных обновлений : необходимо прочитать обратно пользовательскийкаталог для крупных обновлений. Вот как это делается: Шаблон "Запомнить свойство" набора инструментов WiX . Или он вернется к значению по умолчанию во время основного обновления. Это связано с тем, что основное обновление - это удаление старой версии и (пере) установка новой версии.

  • Files : Чтобы установить все необходимые файлы, вам нужно выяснить путем сканирования зависимостей, какие файлы нужно развернуть, чтобы ваше приложение работало, а затем добавить их в пакеты вручную (или использовать heat.exe для автоматической генерации списка файлов для включения). ,Для получения справки см. Приведенные выше ссылки быстрого запуска или статью «Привет, wix»: https://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with

  • Разрешения на обслуживание : Службы должны бытьустанавливается с правами администратора, если вы устанавливаете установку после запроса повышения прав UAC. Скорее всего, он не запускается, потому что отсутствуют файлы и, следовательно, нарушены зависимости. Какие учетные данные использует служба для запуска? LocalSystem?


Макет : Вот быстрый макет того, что вам нужно. Вам необходимо добавить все файлы и зависимости и вставить конструкции Service среди прочего:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="WiXSample" Language="1033" Version="1.0.0.0"
           Manufacturer="Someone" UpgradeCode="cb24bedf-e361-4f25-9a06-ac84ce5d6f5c">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes" />

    <!--Default GUI - add reference to WixUIExtension.dll -->
    <UIRef Id="WixUI_Mondo" />

    <Feature Id="Core" Title="Core" Level="1" ConfigurableDirectory="INSTALLFOLDER" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="WiXSample">
          <Component Feature="Core">
            <File Source="D:\MyBinary.exe" />
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Product>

</Wix>
...