инсталирайте услугата Windows в персонализирани действия

Създадох услуга за Windows c# 4.0. Създадох проект за инсталиране (.msi) за него, който инсталира услугата в определена папка.

За да автоматизирам напълно процеса, бих искал да инсталирам услугата като част от персонализираните действия, които имам за моя инсталатор.

Как мога да кодирам персонализираните си действия за инсталиране или когато деинсталирам msi, да деинсталирам услугата Windows?


person amateur    schedule 16.05.2012    source източник
comment
Моля, имайте предвид, че проектите за инсталиране (.vdproj) няма да се поддържат в Studio 2011, така че е най-добре да преминете към WiX, преди да стигнете твърде далеч в него. Файлът .wixproj има поддръжка на студио и е съвместим с MSBuild. blogs.msdn.com/b/buckh/archive/2011/03/17/   -  person Simon MᶜKenzie    schedule 17.05.2012
comment
Инсталиране на услуга чрез WiX   -  person KMoraz    schedule 18.05.2012


Отговори (2)


Можете да използвате класа ServiceInstaller. Бързо решение би било да намерите инструмент installutil и да го изпълните срещу вашия Service.exe, но трябва да заснемете изхода, за да видите дали инсталацията е успешна или не и нямате много контрол върху Install, Commit, Rollback и Uninstall фази.

person dan radu    schedule 16.05.2012

Прост отговор: недей. Правилният начин е да го инсталирате чрез самата база данни на MSI, т.е. ServiceInstall и ServiceControl таблици. Всяка една „удобна“ IDE за създаване на MSI, а също и WiX идват с примитиви, за да се възползват от това вградено съоръжение.

Самата причина, поради която това е най-добрата практика, точно като включването на COM регистрацията във вашия MSI вместо извикване на DllRegisterServer от COM (DLL), за да се регистрирате, е, че вашето приложение може да бъде нефункциониращ в момента, в който потребителят се опитва да го премахне.

Действията с базата данни все още могат да бъдат изпълнени дори от по-нов Windows Installer, да речем след надстройка на самия Windows, докато вашият код може да откаже да се изпълнява или може да не работи по други причини.

person 0xC0000022L    schedule 16.05.2012
comment
Дойдох със същия проблем. Имам персонализирано действие, което ще генерира набор от свойства и тези свойства ще бъдат заменени в xml конфигурацията на услугата. Но след това wix стартира услугата, преди да се изпълни персонализираното действие. Така че конфигурационният файл има същите стари стойности. Създадох въпрос за препълване на стека stackoverflow.com/questions/40043204/ Можете ли да ми помогнете с това? - person Karthik; 18.10.2016