Передать параметры в InstallUtil из Powershell

Я пытаюсь установить службу Windows из Power-shell следующим образом.

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

Я получаю следующее исключение.

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

Но работает следующая команда.

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

Я пытаюсь установить службу Windows с динамическим именем и с помощью Power-shell передаю имя службы. Любая помощь приветствуется.

Ответ правильный для VS 2008. Но не будет работать в VS 2012. Поскольку InstallUtil изменен.

Вы должны использовать $sn = """" + $serviceName + " " + $exeName + """"

Причина в том, что InstallUtil (2.0) автоматически добавляет кавычки, поэтому мы должны игнорировать их (как в ответе). Но InstallUtil(4), это пропускается, если строка содержит кавычки в любом месте (что является ошибкой? - они должны были проверить, есть ли кавычки в начале и в конце строки - в настоящее время это ломает весь код 2.0).

Рефлектор — ваш друг.


person Rajan Panneer Selvam    schedule 06.12.2011    source источник


Ответы (1)


Ваша проблема в этой строке:

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

Если вы замените его на что-то более простое или сделаете так:

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

Это сработает

person Andrey Marchuk    schedule 06.12.2011
comment
Спасибо. Это сработало. Однако имя службы установлено как [Служба запланированной загрузки]. Я ожидаю службы загрузки по расписанию. - person Rajan Panneer Selvam; 06.12.2011
comment
Тем не менее это [Служба запланированной загрузки]. - person Rajan Panneer Selvam; 06.12.2011
comment
Спасибо. Сработало - $sn = $serviceName + + $exeName C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=$sn $exeFilePath - person Rajan Panneer Selvam; 06.12.2011