Mam usługę .Net Windows. Chcę utworzyć instalator, aby zainstalować tę usługę systemu Windows.
Zasadniczo musi wykonać następujące czynności:
- Pakiet
installutil.exe
(czy to jest wymagane?) - Uruchom
installutil.exe
MyService.exe - Uruchom MyService
Chcę również zapewnić dezinstalator, który uruchamia następujące polecenie:
installutil.exe /u MyService.exe
Jak to zrobić za pomocą Inno Setup?
c#
windows-services
inno-setup
devnull
źródło
źródło
Odpowiedzi:
Nie potrzebujesz
installutil.exe
i prawdopodobnie nie masz nawet praw do jego redystrybucji.Oto sposób, w jaki robię to w mojej aplikacji:
Zasadniczo możesz samodzielnie zainstalować / odinstalować usługę, używając sposobu
ManagedInstallerClass
pokazanego w moim przykładzie.W takim razie wystarczy dodać do skryptu InnoSetup coś takiego:
źródło
Filename: "net.exe"; Parameters: "start WinServ"
. jeśli to nie zadziała, możesz po prostu dodać jeszcze jeden przełącznik - start do aplikacji C # i uruchomić usługę systemu Windows bezpośrednio z programu za pomocą klasy ServiceController ( msdn.microsoft.com/en-us/library/ ... ).using System.Reflection;
lub zmienićAssembly
, abySystem.Reflection.Assembly
w powyższym kodzie.Oto jak to zrobiłem:
Najwyraźniej Inno setup ma następujące stałe do odwoływania się do folderu .NET w twoim systemie:
Więcej informacji tutaj .
źródło
Możesz użyć
stworzyć usługę. Zobacz „ sc.exe ”, aby dowiedzieć się, jak uruchomić, zatrzymać, sprawdzić stan usługi, usunąć usługę itp.
źródło
Jeśli chcesz uniknąć ponownego uruchamiania, gdy użytkownik uaktualnia, musisz zatrzymać usługę przed skopiowaniem exe i zacząć od nowa.
Istnieje kilka funkcji skryptów, które mogą to zrobić w usłudze - funkcje do uruchamiania, zatrzymywania, instalowania i usuwania usługi
źródło