Вы используете знак равенства, где он должен быть двоеточием.
Это должно быть -dest:
, а не -dest=
То же самое с setParam
, это должно быть -setParam:
не -setParam=
Я подозреваю, что у вас на самом деле нет двойной обратной косой черты \\
в вашей строке, это будет выглядеть так, если вы будете проверять через отладчик - я подозреваю, что это отбросит вас.
Поскольку в вашей переменной compname
есть пробелы, в строке аргументов вам нужны двойные кавычки (вероятно, желательно, чтобы вокруг всех ваших переменных была хорошая идея).
Также попробуйте вместо этого запустить msdeploy.exe
напрямую. из через cmd.exe /c
.
Я предположил, что ваш файл msdeploy.exe находится в C: \ Program Files (x86) \ IIS \ Microsoft Web Deploy V3
Результат строки:
-verb:sync -source:package="C:\Deploy\Test\Test.zip" -dest:auto,computerName="PADEVSPTAPP" -setParam:name="IIS Web Application Name",value="Test" -allowUntrusted
Соберите все вместе:
string filename = @"C:\Deploy\Test\Test.zip";
string servername = @"PADEVSPTAPP";
string compname = @"IIS Web Application Name";
string appvalue = @"Test";
string strCmdText;
strCmdText = "-verb:sync -source:package=\"" + filename + "\" -dest:auto,computerName=\"" + servername + "\" -setParam:name=\"" + compname + "\",value=\"" + appvalue + "\" -allowUntrusted";
//System.Diagnostics.Process.Start("CMD.exe", strCmdText);
try
{
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo(@"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe");
procStartInfo.Arguments = strCmdText;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
Console.WriteLine(result);
}
catch (Exception objException)
{
Console.WriteLine(objException.ToString());
}
БОНУСНАЯ ИНФОРМАЦИЯ
Если вам нужен более пуленепробиваемый способ определения, где находится msdeploy.exe
может быть, посмотрите на эти ссылки:
https://gist.github.com/SergeyAxenov/15cf008531e6d0741533
Как узнать, какая версия webdeploy / msdeploy установлена в настоящее время?