2009-06-26 27 views
6

Ich habe ein Windows-Dienst-Projekt mit VSTS 2008 Windows-Diensttyp-Projekt erstellt und möchte jetzt Skripte schreiben, um es mit PowerShell zu installieren/zu deinstallieren.Windows-Dienst installieren/deinstallieren

Alle Referenzmuster oder Dokumente?

Antwort

4

Sie haben nicht erwähnt, welche Sprache Sie verwenden. Mehr als wahrscheinlich, kann die windows install utility damit umgehen.

+0

Ich benutze C#. Noch mehr Ideen? – George2

+0

InstallUtil yourservice.exe – Glenn

2

Wenn ich Ihre Frage richtig verstanden habe, müssen Sie zuerst ein Installationsprogramm in VSTS erstellen. Es ist schon eine Weile, da ich einen gemacht habe, aber es sieht im Grunde wie folgt:

http://csharpcomputing.com/Tutorials/Lesson22.htm

Sobald Sie ein Installationsprogramm erstellt haben, können Sie es mit Powershell automatisieren können.

Wenn Sie wirklich möchten, dass PowerShell Ihr Service-Installer ist, können Sie das Windows-Service-Installationsprogramm unter Verwendung der ServiceInstaller Class von PowerShell aus automatisieren.

18

Hier ist eine bereinigte Version eines Installationsskripts, das ich geschrieben habe. Sollte alles demonstrieren, was Sie tun müssen:

## delete existing service 
# have to use WMI for much of this, native cmdlets are incomplete 
$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'" 
if ($service -ne $null) 
{ 
    $service | stop-service 
    $service.Delete() | out-null 
} 

## run installutil 
# 'frameworkdir' env var apparently isn't present on Win2003... 
$installUtil = join-path $env:SystemRoot Microsoft.NET\Framework\v2.0.50727\installutil.exe 
$serviceExe = join-path $messageServerPath MyService.exe 
$installUtilLog = join-path $messageServerPath InstallUtil.log 
& $installUtil $serviceExe /logfile="$installUtilLog" | write-verbose 

$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'" 

# change credentials if necessary 
if ($user -ne "" -and $password -ne "") 
    { $service.change($null, $null, $null, $null, $null, $null, $user, $password, $null, $null, $null) | out-null } 

# activate 
$service | set-service -startuptype Automatic -passthru | start-service 
write-verbose "Successfully started service $($service.name)"