Передача параметра из Client CMD через файл ICA для запуска опубликованного приложения Citrix - PullRequest
9 голосов
/ 13 января 2012

Я пытаюсь отправить простой строковый параметр из кода веб-приложения C # с помощью вызова строки CMD в файл ICA на Citrix XenApp Server, чтобы запустить определенное опубликованное приложение (макрос Macro Scheduler, скомпилированный в exe), а НЕ весь рабочий стол citrix.

У меня есть веб-приложение с кодом строки cmd, используя

"C:\Program Files (x86)\Citrix\ICA Client\Wfica32.exe"  C:\someICAfile.ica \Param:"/username=SomebodysName" .

Я также пытался использовать синтаксис параметра: /username=SomebodysName, /Param:"/username=SomebodysName"

и около миллиона других комбинаций кавычек и слешей.

Я использовал Citrix QuickLaunch для записи своего ICA-файла, в котором я изменил только InitialProgram=#ApplicationName \Param (я добавил \ Param). Я также пробовал /username и \Param=SomebodysName, и я не могу заставить их работать. Я даже пытался просто напечатать название там, и я не могу заставить его пройти.

exe ожидает параметр "username" и при локальном вызове из командной строки cmd работает с использованием UsernameProgram.exe /username=somebodysname. Я обязательно включил «%*» в конце commandlineexecutable в свойствах расположения приложения Citrix Xenapp, чтобы он мог принимать параметр командной строки.

Это все с использованием C # и XenApp 6. Все работает, кроме передачи параметра, и я понятия не имею, где параметр потерян, если он вообще куда-нибудь попадет. Я чувствую, что перепробовал каждую комбинацию / 's и' s, поэтому, если кто-нибудь может помочь мне с синтаксисом, я был бы очень признателен! Я попытался заглянуть в ICA Client SDK в c # код, но, кажется, просто вручную сделать то, что будет делать внешний файл ICA. Однако, если это не так, пожалуйста, дайте мне знать. Я приближаюсь к точке, где я просто собираюсь попробовать это независимо, потому что я полностью из идей. Пожалуйста, помогите.

Спасибо!

1 Ответ

5 голосов
/ 18 января 2012

В итоге я вызвал файл .bat из своего кода C #, используя следующее:

Process proc_Launch = new Process();
proc_Launch.StartInfo.FileName = "CreateTempICA.bat";
proc_Launch.StartInfo.RedirectStandardError = false;
proc_Launch.StartInfo.RedirectStandardOutput = false;
proc_Launch.StartInfo.WorkingDirectory = @"C:\WorkingDirectory";
proc_Launch.StartInfo.Arguments = @"""/username=somebodysname""";
proc_Launch.Start();

ссылка: Запуск файла bat в c # с .exe и .def кодом

В файле .bat я создаю файл ICA с передачей в параметре имени пользователя следующим образом:

@echo off
:makefile
pushd %temp%
set icafile=temp.ica
@echo [WFClient] > %icafile%
@echo Version = 2 >> %icafile%
@echo HttpBrowserAddress=ServerName:8080 >> %icafile%
@echo ProxyType=Auto >> %icafile%
@echo ConnectionBar=0 >> %icafile%
@echo [ApplicationServers] >> %icafile%
@echo ApplicationName= >> %icafile%
@echo [ApplicationName] >> %icafile%
@echo Address = ApplicationName >> %icafile%
@echo InitialProgram=#"ApplicationName"%1 >> %icafile%
@echo ClientAudio=On >> %icafile%
@echo AudioBandwidthLimit=1 >> %icafile%
@echo CGPAddress=*:#### (use actual numbers here though) >> %icafile%
@echo CDMAllowed=On >> %icafile%
@echo CPMAllowed=On >> %icafile%
@echo DesiredColor=8 >> %icafile%
@echo ConnectionBar=0 >> %icafile%
@echo TWIMode=On >> %icafile%
@echo Compress=On >> %icafile%
@echo TransportDriver=TCP/IP >> %icafile%
@echo WinStationDriver=ICA 3.0 >> %icafile%
@echo BrowserProtocol=HTTPonTCP >> %icafile%
@echo [Compress] >> %icafile%
@echo DriverName= PDCOMP.DLL >> %icafile%
@echo DriverNameWin16= PDCOMPW.DLL >> %icafile%
@echo DriverNameWin32= PDCOMPN.DLL >> %icafile%
start %icafile%
popd

В% 1 в компоненте InitialProgram используется аргумент из кода C #.

ссылка: http://www.virtualizationadmin.com/files/whitepapers/MetaframeXP/Connecting_to_a_Citrix_server_from_the_command_line.htm

Последний шаг - в консоли Citrix Delivery Console убедиться, что в свойствах местоположения опубликованного приложения для CommandLineExecutable после него стоит «% **», включая двойные кавычки. Я считаю, что добавление 2-й звездочки позволяет параметру пройти проверку в командной строке и позволяет использовать его при открытии приложения. В любом случае, он работал с двумя из них, а не с одним из них.

...