2

Я хотел бы запустить MSI, который находится на общем сетевом ресурсе, однако вместо этого отображается диалоговое окно «Помощь» msiexec (которое указывает, что что-то не так с информацией о запуске процесса):

string testPath1 = @"\\mynetwork.share.com\dev\builds 1.0\product.msi";  //DOESN'T WORK
string testPath2 = @"C:\users\username\desktop\product.msi";         //DOES WORK

ProcessStartInfo startMsiexecProcess = new ProcessStartInfo(@"C:\windows\system32\msiexec.exe");
startMsiexecProcess.Arguments = @"/i " + testPath1;
Process.Start(startMsiexecProcess);

Я пробовал варианты на testPath1 - то есть не используя полное имя и другие сетевые ресурсы. Я также попытался отрегулировать интервал в Аргументах.

Наконец, если я изменю «локальный» путь на полностью определенный формат, например так:

string testPath2 = @"\\mylocalmachine.domain.com\c$\users\username\desktop\product.msi";

..это работает правильно. Так что это дает мне уверенность в том, что, скорее всего, это не плохо сформированная строка, вызывающая проблему, когда я пытаюсь выполнить ее на сетевом ресурсе.

Можно ли запустить MSI из общего сетевого ресурса?

1 ответ1

0

Это место на моем пути: «builds 1.0». Процесс.Начало может интерпретировать это как разделитель аргументов.

Чтобы решить эту проблему, я добавил кавычки вокруг пути к выполняемому MSI, т.е.

"\"" + testPath1 + "\""

этот пост привел меня к решению: как обрабатывать значения с пробелами в процессе, начинать в c-sharp

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .