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


104

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

Хтось знайшов спосіб встановити послуги в InstallShield LE? Використовуючи проект Windows Installer, ви просто встановлюєте власні дії.


1
Використання власних дій InstallUtil у проектах розгортання Visual Studio насправді була поганою практикою. Це, головним чином, винахід колеса за допомогою крихкого рішення, оскільки основний інструмент для створення авторів не розкрив власні можливості MSI.
Крістофер Художник

Відповіді:


161

Для Visual Studio 2012 та InstallShield LE виконайте наступне:

  • Запустіть асистента проекту InstallShield та додайте основний висновок вашої послуги до розділу файлів додатків.
  • Після завершення роботи з помічником проекту двічі клацніть пункт «Файли» під кроком другого проекту налаштування.

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

  • Клацніть правою кнопкою миші на первинному виході вашої послуги та перейдіть до властивостей.
  • Перейдіть на вкладку «Налаштування COM та .NET» та поставте прапорець у вікні «Клас інсталятора». введіть тут опис зображення
  • Клацніть Гаразд

Тепер, коли ви збираєтеся та запускаєте інсталяцію, ваша послуга відображатиметься в оснастці служб Windows.

Зверніть увагу, що це передбачає, що ви додали "Інсталятор проекту" до свого сервісного проекту (Клацніть правою кнопкою миші на аркуші дизайну послуги та натисніть "Додати інсталятор"). Я можу підтвердити цю роботу в Windows 8 за допомогою Visual Studio 2012 / InstallShield LE.


Гаразд, це також працює у VS 2010 та Win 7 Pro. Я ще спробував це у VS 2012, але це має зробити. Дякую.
фіз

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

2
Це досить хороший посібник: c-sharpcorner.com/uploadfile/cb88b2/… .
Джонті

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. Налаштування цільової системи> Послуги .
Радєєв

24

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

У будь-якому випадку для виправлення помилки 5036 перейдіть на вкладку Build у VS 2012 (верхнє меню), виберіть менеджер конфігурації, і ви повинні побачити, що ваш файл установки IS обраний у конфігурації DVD-5. Змініть це на CD_ROM і натисніть кнопку «Закрити». Після створення / відновлення він завершиться без помилки IS 5036.

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


2
Це може не мати нічого спільного з його проблемою, але це вирішило мою. Дякую! +1
Девід

Те саме питання для мене з самого початку, установка за замовчуванням мала DVD-5 в якості конфігурації, а налаштування не вдалося створити. Вашою порадою я змінив його на Single Image і створив без проблем!
Нік Борк

Вибрано DVD-5. Проста, але чудова відповідь
beaumondo

6

Хоча використання прапорця класу інсталятора може працювати для деяких примірників, у вас може виникнути така помилка:

Помилка 1001. Зазначена служба вже існує

Ось уривок із цього посилання про те, як вирішити цю проблему:

Для помилки: Помилка 1001. Зазначена служба вже існує

Ця помилка виникне, якщо компонент, що встановлює сервіс .NET, неправильно налаштований з ".NET Class Installer", встановленим Так. Методом установки сервісу .NET є використання перегляду компонентів \ розширені налаштування \ послуги, а не налаштування ".NET Class Installer". Визначення у вікні Компонент \ Додаткові налаштування \ Послуги створює записи в таблицях Windows Installer ServiceControl та ServiceInstall. Ці записи використовуються дією інсталятора Windows "InstallServices" для встановлення Сервісу.


Ви можете допомогти та пояснити це .... Перегляд компонентів \ Додаткові налаштування \ Послуги "можна знайти ??
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.
фіз

4

У мене з цим були всілякі проблеми.

Як слід.

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

Для мене рішення, як згадувалося в іншому місці, - було відмовитися від InstallShield

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

Дуже легко з цього моменту.

Редагувати: оновити - встановіть тут останню версію https://wix.codeplex.com/releases/view/115492 для vs 2013/2015


3

Проекти налаштування Visual Studio повернулися в VS 2013 як візуальне розширення студії.

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

В основному ви створюєте модуль злиття за допомогою WiX, щоб інкапсулювати послугу, а потім додаєте її до свого проекту встановлення. (Обов’язково приєднайтеся до каталогу INSTALLDIR, щоб переконатися, що ваш файл іде туди, де ви очікували). Побудувати та протестувати на VM. Шматок торту.


Ще одна технологія для вивчення? До вчорашнього дня я не чув про WIX. Я досі нічого про це не знаю. Здається, весь цей процес стає дедалі складнішим для чогось, що використовувалося лише в кілька кліків.
фіз

Щоб запустити інсталятор, потрібно лише кілька кліків . Написати їх завжди було набагато більше зусиль.
Крістофер Художник

Також було потрібно лише кілька клацань, щоб встановити інсталятор. Ви повинні ввести назву, виробника тощо, але вам не довелося писати цілий документ xml. Що ви можете сказати мені про WIX? Я можу сказати, що ви, очевидно, багато чого про це знаєте. Що це? Де я його беру? Як я ним користуюся? І т.д. ...
фіз

Я пишу інсталяторів вже 16 років, і лише прості установки з одним EXE і ярликом беруть на мене автор "декількома клацаннями". Так чи інакше, ви можете знайти WiX на CodePlex, і там вийшла книга з цього приводу. Основна технологія - це Windows Installer, і цю документацію можна знайти в SDK платформи та в MSDN.
Крістофер Художник

5
Серйозно "є книга, опублікована на цю тему ... документи в СДК". ?? Кріс, ми просто намагаємось перенести наші рішення 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

Майте на увазі, що все вищезгадане пояснення не допоможе вам, якщо ви плануєте пізніше створити оновлення цієї установки. LE не зможе зупинити запущену службу під час оновлення. Ви не можете це зробити ні з інсталятора служби Windows -> події BeforeInstall.


0

Хотів поставити це сюди;

У VS 2015, виконуючи це, я кілька разів зіткнувся з помилкою 1001 при установці.

Відповідь на цій сторінці пояснив, що для нових версій (все, що минуло 2012 року) , мабуть, вам потрібно явно залишити опцію класу інсталятора не встановленою , а потім додати службу Windows у розділ Служби на етапі 3 проекту інсталятора:

Помилка 1001 під час встановлення спеціальної служби Windows

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.