2012-01-30 10 views

Odpowiedz

9

Installutil jest niezbędny, ale aby to ułatwić, można utworzyć projekt instalacji, aby po prostu uruchomić .msi, aby zainstalować usługę. (Ta wykorzystuje installutil pod maską, ale to znacznie upraszcza instalację.)

Jeden solucja jest tutaj: http://support.microsoft.com/kb/816169

a inny jest tutaj: http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

Główną różnicą między nimi jest ilość kodu w próbkach. Oboje prowadzą cię tym samym procesem.

Artykuły powiązane z są stare, ale nadal mają zastosowanie w VS2010. Użyłem drugiego artykułu, aby przejść przez proces usługi VS2010 właśnie w zeszłym tygodniu.

+0

Dzięki za relucję. Użyłem też drugiego artykułu z wielkim sukcesem. Jednak w mojej usłudze mam zmienną o nazwie filepath, która określa wyjściową lokalizację plików, które tworzy moja usługa. Czy mimo to mogę poprosić użytkownika, aby mógł wpisać żądaną lokalizację? – Simon

+0

czy powinienem spojrzeć do sintall za pośrednictwem pliku .bat fle? – Simon

+1

Możesz to zrobić, jeśli wartości znajdują się w pliku .config. Jest tu tutorial pokazujący, w jaki sposób modyfikować wartości app.config w scenariuszu instalacji instalacji instalacyjnej. Nie używałem go, ale wygląda na spromowanie. http://raquila.com/software/configure-app-config-application-settings-during-msi-install/ – David

4

Dlaczego chcesz uniknąć installutils?

Można spróbować użyć komendy sc, jak w sc create ...

EDIT: Tutaj jest strona MSDN dla niego: http://support.microsoft.com/?kbid=251192

DESCRIPTION: 
     Creates a service entry in the registry and Service Database. 
USAGE: 
     sc <server> create [service name] [binPath= ] <option1> <option2>... 

OPTIONS: 
NOTE: The option name includes the equal sign. 
     A space is required between the equal sign and the value. 
type= <own|share|interact|kernel|filesys|rec> 
     (default = own) 
start= <boot|system|auto|demand|disabled|delayed-auto> 
     (default = demand) 
error= <normal|severe|critical|ignore> 
     (default = normal) 
binPath= <BinaryPathName> 
group= <LoadOrderGroup> 
tag= <yes|no> 
depend= <Dependencies(separated by/(forward slash))> 
obj= <AccountName|ObjectName> 
     (default = LocalSystem) 
DisplayName= <display name> 
password= <password> 
+0

To jest dobre. Zapomniałem o tym. Użyłem tego w mojej pierwszej usłudze, zanim dowiedziałem się, jak pozwać pliki MSI. To pozwala ci robić rzeczy, których nie możesz zrobić z InstallUtil jak ustawienie domyślnej nazwy użytkownika i hasła dla usługi, która ma działać. +1. – David

+0

zwróć szczególną uwagę na [binPath =] musi być spacja między znakiem = i początkiem twojej ścieżki. To ma mnie wiele razy. – AndyM

2

Zawsze można zrobić z wpisów rejestru.
Klucze znajdują się w HKLM\SYSTEM\CurrentControlSet\services

Nazwa klucza utworzyć osadzony jest nazwą usługi na swojej obsługi serwisowej. Poniższe wartości są istotne:

DisplayName = tekst, który zostanie wyświetlony w Menedżerze usług

ImagePath = FQ Nazwa pliku z serwisu wykonywalnego

Start (DWORD) = typ uruchamiania (3 = autostart)

DelayedAutoStart (słowa) = (1 = opóźnienie)

WOW64 (słowa) = (0 = 64-bitowy aplikacji, 1 = 32 bity APP)

ErrorControl (DWORD) = 0

ObjectName = {username}, aby uruchomić pod (System lokalny dla konta systemowego)

Istnieje wiele innych wartości, ale to powinno Ci zacząć.

Powiązane problemy