2012-01-13 14 views
9

Estoy intentando enviar un parámetro de cadena simple desde el código de la aplicación web C# usando la línea CMD al archivo ICA al servidor Citrix XenApp para iniciar una aplicación publicada específica (Macro Macro de Scheduler compilada en exe), NO todo el escritorio citrix.Pasar el parámetro de Client CMD a través del archivo ICA para iniciar la aplicación Citrix publicada

Tengo una aplicación web con código de línea de comando utilizando

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

También he probado para la sintaxis de parámetros: /username=SomebodysName, /Param:"/username=SomebodysName"

y alrededor de un millón de combinaciones de citas y barras.

Utilicé Citrix QuickLaunch para escribir mi archivo ICA, en el que lo único que cambié fue InitialProgram=#ApplicationName \Param (agregué el \ Param). También probé /username y \Param=SomebodysName y tampoco puedo hacer que funcionen. Incluso intenté codificar el nombre allí y no puedo procesarlo.

El exe espera un parámetro "username" y cuando se invoca localmente desde el indicador cmd, funciona usando UsernameProgram.exe /username=somebodysname. Me aseguré de incluir el "%*" al final de commandlineexecutable en las propiedades de ubicación de la aplicación Citrix Xenapp para garantizar que pueda aceptar un parámetro de línea de comando.

Esto es todo usando C# y XenApp 6. Todo funciona, excepto pasar el parámetro, y no tengo idea de dónde se pierde el parámetro, si es que llega a algún lado. Creo que he probado todas las combinaciones de '/' s 's y' s, así que si alguien pudiera ayudarme con la sintaxis, ¡realmente lo agradecería! Intenté investigar el SDK de Cliente ICA en el código C#, pero parece que solo hace manualmente lo que hará un archivo ICA externo. Sin embargo, si esto es incorrecto, hágamelo saber. Me estoy acercando al punto en el que voy a intentarlo independientemente, porque estoy . completamente fuera de las ideas por favor, ayuda

Gracias

+0

para pasar un parámetro estático de un archivo ICA a una aplicación Citrix publicada: InitialProgram = # "ApplicationName" "/ faveColor = yellow". En las propiedades de aplicación en Citrix Delivery Services Console, he cambiado el commandlineexecutable en el valor Ubicación al ser C: \ rutaArchivo \ ApplicationName.exe "% **". Creo que los dos * omiten la validación de línea de comando. De cualquier forma, esto permite que el parámetro pase a mi aplicación, como si estuviera llamando a la aplicación desde una línea de comando localmente. Ahora sólo hay que encontrar la manera de conseguir el parámetro en el ICA y todo estará bien de nuevo en el mundo. – Beckyjoon

Respuesta

5

terminé llamando a un archivo .bat de mi código C# utilizando la siguiente:.!

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(); 

Referencia: Run bat file in c# with .exe and .def code

En el archivo .bat, I crear un archivo ICA que pasa en el Parámetro nombre de usuario como sigue:

@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 

El% 1 en el componente de InitialProgram es donde el argumento se utiliza desde el C# código.

referencia: http://www.virtualizationadmin.com/files/whitepapers/MetaframeXP/Connecting_to_a_Citrix_server_from_the_command_line.htm

El último paso es asegurarse de que en su consola de Citrix Delivery para asegurarse de que las propiedades de ubicación de la aplicación publicada para la CommandLineExecutable tiene un "% **" después de ella, incluyendo el doble citas. Creo que al agregar el segundo asterisco, el parámetro pasa a través de la validación de la línea de comando y permite que se use cuando se abre la aplicación. De cualquier manera, sin embargo, funcionó con dos de ellos y no con uno de ellos.

Cuestiones relacionadas