При использовании msdeploy
для развертывания приложения IIS на удаленном сервере с помощью функции Web Deploy On Demand (tempagent) я получаю следующую ошибку:
./myApp.deploy.cmd : Error: Unable to get the remote environment variable 'WindowsDirectory' on the computer
'myserver.mydomain.com'.
At line:1 char:1
+ ./myApp.deploy.cmd /T /M:$target /U:$username /P:$ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Error: Unable t...com'.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Error: The object invoked has disconnected from its clients. (Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))
Error count: 1.
Я использую автоматически сгенерированный сценарий развертывания, созданный целевым объектом пакета в msbuild
. Я запускаю каталог, в котором живут все эти артефакты. Это мой скрипт для запуска этого скрипта:
$target = 'myserver.mydomain.com'
$username = 'myusername'
$password = 'mypassword'
./myApp.deploy.cmd /T /M:$target /U:$username /P:$password /G:true
Это сценарий, созданный сценарием .cmd
, точно такая же ошибка возникает, если я запускаю его напрямую:
SetParameters from:
"C:\Users\MaxCadmin\Desktop\Package\myApp.SetParameters.xml"
You can change IIS Application Name, Physical path, connectionString
or other deploy parameters in the above file.
-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package='C:\Users\MaxCadmin\Desktop\Package\myApp.zip' -dest:auto,computerName="myserver.mydomain.com",userName="myusername",password="mypassword",includeAcls="False",tempAgent="true" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Users\MaxCadmin\Desktop\Package\myApp.SetParameters.xml" -whatif
Info: Using ID 'bce210a0-29f9-4859-8fc2-f308c6ce5e72' for connections to the remote server.
Я использую функцию tempagent, поэтому мне не нужно устанавливать Web Deploy на все мои цели и поддерживать их все обновленными до одной и той же версии. Я предпочитаю перспективу использования временного агента, полностью исключающего необходимость какой-либо специальной настройки целей. Я подтвердил, что на моей цели в этом случае не установлен Web Deploy.
Я считаю, что временный агент выдает ошибку отключения в конце сообщения об ошибке. Меня больше беспокоит ошибка, связанная с невозможностью получить удаленную переменную.
Что бы это ни стоило, я пошел на удаленный сервер и создал эту переменную env со значением, совпадающим со значением windir
, то есть C:\Windows
, и доказал себе, что оно присутствует в новой оболочке. Но это никак не изменило ошибку.