2009-06-26 10 views
6

J'ai créé un projet de service Windows en utilisant le projet de type Service Windows VSTS 2008 et maintenant je veux écrire des scripts pour l'installer/désinstaller à l'aide de PowerShell.installer/désinstaller un service Windows

Des échantillons ou des documents de référence?

Répondre

4

Vous n'avez pas mentionné la langue que vous utilisez. Plus que probablement, le windows install utility peut le gérer.

+0

J'utilise C#. D'autres idées? – George2

+0

InstallUtil yourservice.exe – Glenn

2

Si je comprends bien votre question, vous devez d'abord créer un programme d'installation à partir de VSTS. Cela fait longtemps que je l'ai fait un, mais il ressemble fondamentalement ceci:

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

Une fois que vous avez créé un programme d'installation, vous pouvez automatiser avec PowerShell. Si vous voulez vraiment que PowerShell soit votre installateur de service, il peut y avoir un moyen d'automatiser le programme d'installation de Windows à partir de PowerShell en utilisant le ServiceInstaller Class.

18

Voici une version aseptisée d'un script d'installation que j'ai écrit. Devrait démontrer tout ce que vous devez faire:

## 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)"