Pregunta

Estoy tratando de instalar un servicio de Windows desde Power-Shell de la siguiente manera.

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

Estoy obteniendo la siguiente excepción.

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..

Pero el siguiente comando funciona.

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

Estoy tratando de instalar el servicio de Windows con un nombre dinámico y, con la caparazón de alimentación, paso el nombre del servicio. Se agradece cualquier ayuda.

La respuesta es correcta para VS 2008. pero fallará en VS 2012. Porque InstallUtil se modifica.

Deberías usar$sn = """" + $serviceName + " " + $exeName + """"

La razón es que InstallUtil (2.0) agrega automáticamente las citas y, por lo tanto, debemos ignorarlas (como en la respuesta). Pero InstallUtil (4), esto se omite si la cadena contiene citas en cualquier ubicación (que es un error? - Deberían haber verificado si hay citas al principio y finalización de la cadena, actualmente este código 2.0).

El reflejo es tu amigo.

¿Fue útil?

Solución

Tu problema está en esta línea:

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

Si lo reemplaza con algo más simple, o lo hace así:

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

Funcionará

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top