Использование InstallUtil.exe и установка пароля службы Windows, содержащего пробелы

Наше приложение установки запрашивает имя пользователя и пароль и устанавливает службу .NET с этой информацией. У нас есть служба Windows, которая установлена ​​с помощью

InstallUtil.exe
    /username=auser
    /password=password
    /name=TestService
    MyService.exe

Это работает нормально, пока наши клиенты не начнут использовать надежные пароли, содержащие пробелы. Тогда это становится:

InstallUtil.exe
    /username=auser
    /password=password
    with
    spaces
    /name=TestService
    MyService.exe

Этот вызов завершается со следующей ошибкой:

При инициализации установки возникло исключение: System.IO.FileNotFoundException: не удалось загрузить файл или сборку «file:///C:\Users\me[snip]\with» или одну из ее зависимостей. Система не может найти указанный файл.

Как мы можем отправить пароль с пробелами в InstallUtil.exe?


person Paul Williams    schedule 27.05.2014    source источник


Ответы (2)


Вы можете заключить каждый параметр в двойные кавычки:

installutil.exe "/username=user 1" "/password=pass word"
person itsme86    schedule 27.05.2014
comment
+1 Я проверил это и был удивлен, увидев, что это работает. Я ожидал, что кавычки потребуются только для части данных, то есть /username="user 1". - person Paul Williams; 28.05.2014

Запустив InstallUtil.exe без параметров, вы увидите использование:

Использование: InstallUtil[/u | /uninstall] [опция [...]] сборка [[опция [...]] сборка] [...]]

В приведенном мной примере код пытался отправить пароль «пароль с пробелами». Это было помещено в командную строку таким образом, что установщик думал, что пароль - «пароль», а имя сборки - «с». Файла с именем "с" не существовало. Это вызвало System.IO.FileNotFoundException.

Ответ заключается в заключении пароля (и любых других параметров в InstallUtil.exe) в кавычки:

InstallUtil.exe
    /username="user name with spaces"
    /password="password with spaces"
    /name="Service Name With Spaces"
    "Executable Name With Spaces.exe"
person Paul Williams    schedule 27.05.2014