Question

J'essaye d'installer un service Windows à partir de Power-shell comme suit.

$sn = """" + $serviceName + " " + $exeName + """"
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=[$sn]  $exeFilePath

Je reçois l'exception suivante.

Microsoft (R) .NET Framework Installation utility Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.IO.FileNotFoundException: Could not load file or assembly 'file:///E:\Scheduled' or one of its dependencies. The system cannot f
ind the file specified..

Mais la commande suivante fonctionne.

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=["Scheduled Download Service"]  $exeFilePath

J'essaye d'installer le service Windows avec un nom dynamique et en utilisant Power-shell je passe le nom du service.Toute aide est appréciée.

La réponse est correcte pour VS 2008. Mais échouera dans VS 2012. Parce qu'InstallUtil est modifié.

Vous devez utiliser $sn = """" + $serviceName + " " + $exeName + """"

La raison en est que InstallUtil (2.0) ajoute automatiquement les guillemets et nous devons donc les ignorer (comme dans la réponse).Mais InstallUtil (4), ceci est ignoré si la chaîne contient des guillemets à n'importe quel endroit (ce qui est un bogue? - ils auraient dû vérifier s'il y a des guillemets au début et à la fin de la chaîne - Actuellement, cela casse tout le code 2.0).

Reflecter est votre ami.

Était-ce utile?

La solution

Votre problème est dans cette ligne:

$sn = """" + $serviceName + " " + $exeName + """"

Si vous voulez le remplacer par quelque chose de plus simple, ou faites-le comme ceci:

$sn = $serviceName.ToString() + " " + $exeName

Cela fonctionnera

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top