Как создать проект InstallShield LE для установки службы Windows?


104

Я скачал Visual Studio 2012 вчера, когда он был выпущен на MSDN. Я заметил, что некоторые типы проектов, которые были у нас в 2010 году, исчезли или изменились. Самая большая разница для меня сейчас - это удаление проекта установщика Windows. Теперь нас заставляют использовать InstallShield LE (Limited Edition). Проблема здесь в том, что я пишу тонну служб Windows и не вижу, как установить InstallShield LE. Похоже, что нам (моей компании) придется инвестировать в лицензии на профессиональную версию.

Кто-нибудь нашел способ установить сервисы в InstallShield LE? При использовании проекта установщика Windows вы просто устанавливаете собственные действия.


1
Использование настраиваемых действий InstallUtil в проектах развертывания Visual Studio было действительно плохой практикой. По сути, это изобретение колеса с помощью хрупкого решения, потому что лежащий в основе инструмент разработки не раскрывает собственные возможности MSI.
Кристофер Пейнтер

Ответы:


161

Для Visual Studio 2012 и InstallShield LE выполните следующие действия:

  • Запустите помощника проекта InstallShield и добавьте основной вывод вашей службы в раздел файлов приложения.
  • Завершив работу с помощником по проекту, дважды щелкните элемент «Файлы» на втором шаге проекта установки.

Раздел файлов

  • Щелкните правой кнопкой мыши основной вывод вашей службы и перейдите к свойствам.
  • Щелкните вкладку «Параметры COM и .NET» и установите флажок «Класс установщика». введите описание изображения здесь
  • Нажмите ОК

Теперь, когда вы соберете и запустите установку, ваша служба появится в оснастке Windows Services.

Обратите внимание, что здесь предполагается, что вы добавили «Установщик проекта» в свой проект службы (щелкните правой кнопкой мыши лист проектирования службы и выберите «Добавить установщик»). Я могу подтвердить эту работу в Windows 8 с помощью Visual Studio 2012 / InstallShield LE.


Хорошо, это также работает в VS 2010 и Win 7 Pro. Мне еще предстоит попробовать это в VS 2012, но это должно сработать. Спасибо.
fizch 08

3
Можно ли получить диалоговое окно с запросом у пользователя строки подключения к базе данных (сервер, аутентификацию и имя базы данных) и обновить файл конфигурации службы Windows с помощью InstallShield LE?
Аделия Беналиус

2
Это довольно хорошее руководство: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty

1
Проект установщика Visual Studio в VS 2013. Скачать: visualstudiogallery.msdn.microsoft.com/… Голос пользователя: visualstudio.uservoice.com/forums/121579-visual-studio/… Ссылка: blogs.msdn.com/b/visualstudio/archive /
2014/04/17

1
Эта опция не запускает службу после установки. Чтобы установить службу и запустить ее, в обозревателе решений выберите 3. Настроить целевую систему> Службы .
Rajeev

24

Недавно я установил VS 2012 с помощью Install Shield LE. Сначала я продолжал получать внутреннюю ошибку сервера ISEXP -5036 после сборки (это было после настройки проекта ISLE и запуска через Install Shield Project Assistant). В конце концов я обнаружил, что он пытался создать MSI в типе носителя DVD-5, что и не удалось. По какой-то причине повторное создание решения с нуля каким-то образом распознает создание только для типов носителей CD_ROM и SingleImage, которые работают.

В любом случае, чтобы исправить ошибку 5036, щелкните вкладку «Сборка» в VS 2012 (верхнее меню), выберите диспетчер конфигурации, и вы должны увидеть, что ваш установочный файл IS выбран в конфигурации DVD-5. Измените это на CD_ROM и нажмите "Закрыть". Как только вы построите / перестроите, он завершится без ошибки IS 5036.

введите описание изображения здесь


2
Возможно, это не имеет ничего общего с его проблемой, но решило мою. Спасибо! +1
Дэвид

У меня такая же проблема с самого начала, при установке по умолчанию в качестве конфигурации использовался DVD-5, и установка не удалась. С вашим советом я изменил его на Single Image и собрал без проблем!
Nick Bork

Был выбран DVD-5. Простой, но отличный ответ
beaumondo

6

Хотя использование флажка класса установщика может работать в некоторых случаях, может возникнуть следующая ошибка:

Ошибка 1001. Указанная служба уже существует.

Вот выдержка из этой ссылки о том, как решить эту проблему:

Ошибка: ошибка 1001. Указанная служба уже существует.

Эта ошибка возникает, если компонент, устанавливающий службу .NET, неправильно настроен, если для параметра «Класс установщика .NET» задано значение Да. Для установки службы .NET необходимо использовать представление Component \ Advanced Settings \ Services, а не параметр «Класс установщика .NET». При создании определений в представлении Component \ Advanced Settings \ Services создаются записи в таблицах ServiceControl и ServiceInstall установщика Windows. Эти записи используются установщиком Windows действием InstallServices для установки Службы.


не могли бы вы помочь и объяснить это .... Можно найти представление Component \ Advanced Settings \ Services ??
pithhelmet

он находится в основной версии установщика (ffs! Microsoft, почему вы вынули тип проекта установки!) .. Если у вас есть основная версия. community.flexerasoftware.com/…
Пол Хатчинсон

Я обнаружил, что это связано с длиной имени проекта установки, т.е. измените имя проекта установки на что-то более короткое, например, «Установить» или «Настройка».
Джонти

4

Если ваш проект - .NET, попробуйте тогда вы можете использовать класс ServiceProcessInstaller с InstallShield LE.

Чтобы заставить его работать с InstallShield, вы должны зайти в дерево «файлов» InstallShield и щелкнуть правой кнопкой мыши по вашему файлу. Затем установите флажок «Класс установщика» на вкладке «Настройки COM и .NET».

Я заставил его работать, но у меня были проблемы с некоторыми ОС, такими как Windows 2008R2. Ваш пробег может отличаться.

Вот пример: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
Сожалею. Я не видел этого до сегодняшнего дня. Похоже, это почти тот же ответ, что и я. Я добавлю +1.
fizch 08

4

У меня с этим были разные проблемы.

Следующим образом.

  1. InstallShield требует времени для загрузки
  2. процесс регистрации - это боль.
  3. параметры конфигурации запутаны и слишком сложны.
  4. принятое решение в этой ветке - это взлом, и он не всегда работает - см. 1001 в документации - по сути, вам нужно пройти через платный доступ, чтобы получить правильные параметры конфигурации для установки службы Windows.

Решение для меня, как упоминалось в другом месте, - отказаться от InstallShield

введите описание изображения здесь

С этого момента очень просто.

Изменить: Обновление - установите последнюю версию отсюда https://wix.codeplex.com/releases/view/115492 для vs 2013/2015


3

Проекты установки Visual Studio вернулись в VS 2013 как расширение Visual Studio.

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

Обновите свое решение и проекты до VS 2013. Если вы все еще используете VS 2010, вам, вероятно, будет лучше перейти на VS 2013 напрямую.

Мой опыт работы с Installsheild LE показывает, что он очень необычный, но как только вы разберетесь с трюками, его проще использовать. Однако я думаю, что ограниченная версия - это способ Microsoft и Flexera продать полнофункциональную версию. Другими словами, сначала мы платим Microsoft много денег за Visual Studio, а затем их партнеру (в преступлении) больше за Installsheild. Плохая стратегия, которая не сработала, так как им пришлось вернуть проекты установки в VS 2013.


2

Я писал на эту тему:

Расширение InstallShield с помощью Windows Installer XML - Windows Services

По сути, вы создаете модуль слияния, используя WiX, чтобы инкапсулировать службу, а затем добавляете его в свой проект installshield. (Обязательно подключитесь к каталогу INSTALLDIR, чтобы убедиться, что ваш файл идет туда, куда вы ожидаете). Сборка и тестирование на виртуальной машине. Кусок пирога.


Еще одна технология для изучения? До вчерашнего дня я не слышал о WIX. Я до сих пор ничего об этом не знаю. Похоже, весь этот процесс становится все труднее для чего-то, что раньше занимало всего несколько кликов.
fizch

Для ЗАПУСКА установщика требуется всего несколько щелчков мышью . Для их создания всегда требовалось гораздо больше усилий.
Кристофер Пейнтер

Кроме того, для установки установщика потребовалось всего несколько щелчков мышью. Вы должны ввести название, производителя и т. Д., Но вам не нужно было создавать весь xml-документ. Что вы можете рассказать мне о WIX? Могу сказать, что вы, очевидно, много об этом знаете. Что это? Где мне это достать? Как мне его использовать? Etc ...
fizch

Я пишу программы установки уже 16 лет, и только простые установки с одним EXE и ярлыком требуют от меня «всего несколько щелчков мышью» до автора. В любом случае вы можете найти WiX на CodePlex, и на эту тему опубликована книга. Базовая технология - это установщик Windows, и эту документацию можно найти в Platform SDK и в MSDN.
Кристофер Пейнтер

5
Серьезно "есть книга по этой теме ... документация в SDK". ?? Крис, мы просто пытаемся перенести наши решения 2010 года на 2012 год, и установка / настройка останавливает нас. MS, верните VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio/…
JimSTAT

2

Я использую VS2012 и Installshield LE Spring Edition. Мне не пришлось использовать Wix.

Если вы столкнулись с ошибкой «Не удалось создать _isconfig.xml для использования с InstallUtilLib.dll», создайте папку с тем же именем, что и ваш проект установки, внутри папки проекта установки.

Кредиты для http://community.flexerasoftware.com/showthread.php?165929-Could-not-create-_isconfig-xml-for-use-with-InstallUtilLib-dll


2

У меня возникли проблемы с поиском места для добавления установщика, как указано в ответе. Итак, вот как.

Дважды щелкните свой класс обслуживания в своем проекте службы Windows. Пустой экран с текстом «Чтобы добавить компоненты в свой класс, перетащите их из панели инструментов и используйте окно свойств для установки их свойств ...» Щелкните правой кнопкой мыши в любом месте, кроме ссылок и выберите «Добавить установщик»

до встречи


0

Имейте в виду, что все приведенное выше объяснение не поможет вам, если вы планируете позже создать обновление этой установки. InstallShiled LE не может остановить работающую службу при обновлении. Вы также не можете сделать это из события Window Service Installer -> BeforeInstall.


0

Хотел поместить это сюда;

В VS 2015 при этом я неоднократно сталкивался с ошибкой 1001 при установке.

Ответ на этой странице объяснил, что в более новых версиях (что-либо после 2012 года) , по-видимому, вам нужно явно не отмечать параметр класса установщика , а затем добавить свою службу Windows в раздел Службы в Шаге 3 проекта установщика:

Ошибка 1001 при установке пользовательской службы Windows

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.