Passa i parametri a InstallUtil da PowerShell
-
28-10-2019 - |
Domanda
Sto cercando di installare un servizio Windows da Power-Shell come segue.
$sn = """" + $serviceName + " " + $exeName + """"
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=[$sn] $exeFilePath
Sto ricevendo la seguente eccezione.
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..
Ma il seguente comando funziona.
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=["Scheduled Download Service"] $exeFilePath
Sto cercando di installare il servizio Windows con un nome dinamico e usando il guscio di alimentazione Passo il nome del servizio. Qualsiasi aiuto è apprezzato.
La risposta è corretta per VS 2008. ma fallirà in VS 2012. perché l'installazioni viene modificata.
Dovresti usare$sn = """" + $serviceName + " " + $exeName + """"
Il motivo è che InstallUtil (2.0) aggiunge automaticamente le citazioni e quindi dovremmo ignorarle (come nella risposta). Ma InstallUtil (4), questo viene saltato se la stringa contiene citazioni in qualsiasi posizione (che è un bug? - Avrebbero dovuto controllare se ci sono citazioni all'inizio e alla fine della stringa - attualmente questo interrompe tutto il codice 2.0).
Reflecter è tuo amico.
Soluzione
Il tuo problema è in questa riga:
$sn = """" + $serviceName + " " + $exeName + """"
Se lo sostituirai con qualcosa di più semplice o lo fai in questo modo:
$sn = $serviceName.ToString() + " " + $exeName
Funzionerà