Установщик WiX и пользовательские действия - PullRequest
3 голосов
/ 17 июля 2009

У меня есть приложение, которое не очень простая служба Windows (C #). Я создал установщик с помощью Visual Studio 2008, который выполнил работу по установке службы на клиентском компьютере, но использование проекта развертывания Visual Studio имеет 2 недостатка:

  1. Не получается заставить установщик собираться с использованием MSBuild (я пробовал метод DevEnv.exe). Служба представляет собой небольшой фрагмент гораздо более крупного проекта, и я хотел бы, чтобы сборка файла MSI происходила одновременно с моей сборкой. Я использовал WiX для других инсталляторов, но это конкретное приложение требует настройки в настройке.
  2. Кажется, есть ошибка в проекте развертывания VS 2008 при установке служб Windows. При ремонте и обновлении сервис никогда не останавливается. (вызвано неверной последовательностью для RemoveExistingProducts - я обошел эту проблему, изменив последовательность на 1525)

Что приятно в проекте развертывания VS2008, так это то, что я создал настраиваемое действие, которое показывает форму, которая получает некоторую информацию от пользователя, подключается к службе WCF, которая получает данные и сохраняет их в зашифрованном хранилище данных на своем локальном компьютере. для использования сервисом.

Теперь я выглядел высоко и низко, и я не вижу возможности этого с WiX. Запускать EXE после установки программы не очень приятно. Я хотел бы иметь возможность вызывать метод в моей DLL пользовательских действий, который отображает форму и выполняет необходимую обработку. Есть ли способ сделать это с WiX? - или даже создать пользовательский графический интерфейс в WiX, который получает значения и передает эти значения методу для обработки

Итак, вопросы:

  1. Возможно ли это с WiX?
  2. Каковы мои альтернативы, если нет?

Большое спасибо

Ответы [ 3 ]

1 голос
/ 22 июля 2009

Ответ на ваш вопрос № 1 - да, но он немного сложен. Вы можете определить диалоги для сбора информации от пользователя с помощью элемента UI и сохранить его свойства сеанса. Вы можете вставить эти диалоги в поток с помощью элемента Publish . Затем вы можете создать vb-скрипт CustomAction и делать что угодно с этими свойствами сеанса. Проверьте этот учебник для более.

1 голос
/ 28 июля 2011

Примечание об узле управления сервисом WiX:

Если ваша служба полагается на сборки, которые ваш установщик помещает в GAC, то он не запустится. По какой-то причине WiX планирует действие StartService ДО того, как оно публикует сборки в GAC, поэтому в этом случае вам нужно написать специальное действие для запуска службы.

1 голос
/ 17 июля 2009

Вы можете определенно установить и запустить сервисы с WiX - я делаю это весь день, каждый день: -)

Проверьте элементы ServiceInstall и ServiceControl (их еще больше, если вам нужно указать еще больше).

По сути, сначала вам нужно определить свой служебный файл (YourService.exe) как файл в компоненте, а затем вам нужно дополнительно указать элементы ServiceInstall (и, возможно, ServiecControl).

<Component Id='YourServiceComponent' Guid='.....' DiskId='1'>
  <File Id='YourServiceEXEFile' Name='YourService.exe' 
        src='(path to your EXE)/YourService.exe' KeyPath='yes'/>
  <ServiceInstall Id='YourServiceInstall' Name='YourServiceName' 
                  Description='.....' ErrorControl='normal' 
                  Start='auto' Type='ownProcess' Vital='yes' />
  <ServiceControl Id='UninstallYourService' Name='YourServiceName' 
                  Remove='uninstall' Wait='yes' />
</Component>

Затем вам нужно добавить этот компонент к одной из устанавливаемых функций в вашей установке - и это все!

Марк

...