2012-01-13 9 views
9

Sto cercando di inviare un semplice parametro stringa dal codice dell'app Web C# utilizzando la chiamata della linea CMD al file ICA su Citrix XenApp Server per avviare un'applicazione specifica pubblicata (Macro Scheduler macro compilato in exe), NON l'intero desktop Citrix.Passaggio del parametro CMD client tramite il file ICA per avviare l'app Citrix

Ho un web app con codice di linea cmd utilizzando

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

Ho anche provato per la sintassi del parametro: /username=SomebodysName, /Param:"/username=SomebodysName"

e circa un milione di altre combinazioni di citazioni e barre.

Ho usato Citrix QuickLaunch per scrivere il mio file ICA, in cui l'unica cosa che ho cambiato era InitialProgram=#ApplicationName \Param (ho aggiunto il parametro \ Param). Ho anche provato /username e \Param=SomebodysName e non riesco a far funzionare nessuno di questi. Ho persino provato a scrivere il nome proprio lì dentro e non riesco a farcela.

L'exe si aspetta un parametro "username" e quando chiamato in locale dal prompt cmd funziona con UsernameProgram.exe /username=somebodysname. Mi sono assicurato di includere lo "%*" alla fine dello commandlineexecutable nelle proprietà di posizione dell'applicazione Citrix Xenapp per garantire che potesse accettare un parametro della riga di comando.

Questo è tutto utilizzando C# e XenApp 6. Tutto funziona tranne il passaggio del parametro, e non ho idea di dove il parametro è perso, se arriva anche ovunque. Mi sento come se avessi provato ogni combinazione di/'s e "s così che se qualcuno potesse per favore aiutarmi con la sintassi, lo apprezzerei davvero! Ho provato a guardare nell'SDK del client ICA nel codice C#, ma sembra fare solo manualmente quello che farà un file ICA esterno.Se questo è sbagliato, per favore, fammelo sapere. Mi sto avvicinando al punto in cui sto andando a provarlo, indipendentemente dal fatto che io sia . completamente fuori di idee Si prega di aiutare

Grazie

+0

per passare un parametro statico da un file ICA a un'applicazione Citrix pubblicata: InitialProgram = # "ApplicationName" "/ faveColor = yellow". Nelle proprietà dell'applicazione in Citrix Delivery Services Console, ho modificato commandlineexecutable nella proprietà Location come C: \ filePath \ ApplicationName.exe "% **". Credo che i due * aggirino la convalida della riga di comando. Ad ogni modo, questo lascia passare il parametro alla mia app, come se stessi chiamando l'app da una riga di comando localmente. ORA, ho solo bisogno di capire come inserire il parametro nell'ICA e tutto tornerà di nuovo nel mondo. – Beckyjoon

risposta

5

ho finito per chiamare un file .bat dal mio codice C# utilizzando il seguente:.!

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

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

Nel file .bat, ho creare un file ICA passando il Parametro nome utente come segue:

@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 

L'% 1 della componente InitialProgram è dove l'argomento è usato dalla C# codice.

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

L'ultimo passo è quello di assicurarsi nella vostra console Citrix Delivery per assicurarsi che le proprietà di localizzazione dell'applicazione pubblicato per la CommandLineExecutable ha un "% **" dopo di esso, compreso il doppio citazioni. Credo che l'aggiunta del secondo asterisco consenta al parametro di passare attraverso la convalida della riga di comando e consenta di utilizzarlo quando l'applicazione viene aperta. In ogni caso, ha funzionato con due di loro e non con uno di loro.

Problemi correlati