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.

È stato utile?

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à

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top