Como publicar uma aplicação Web no Citrix XenApp

Existem algumas formas de publicar uma aplicação Web no Citrix XenApp.

A mais simples, talvez, é utilizar o modo “Kyosk” do Internet Explorer. Para isso basta utiilizar o parâmetro “-k” ao chamar o aplicativo. A configuração da aplicação no Citrix Studio deveria ficar mais ou menos assim:

Internet Explorer modo Kyosk
Internet Explorer modo Kyosk

O problema do modo Kyosk é que o IE é iniciado em tela cheia e sem o botão “Fechar”. Isso pode confundir o usuário e prejudicar a sua experiência de uso.

Outra forma de fazer isso é utilizar um script que instancia o Internet Explorer desabilitando alguns componentes (tais como a barra de endereços, botões de navegação, complementos e etc). Aqui nesse post, há um exemplo de um VB Script bem simples que dá conta do recado, e que reproduzo abaixo:

Set oIE1 = WScript.CreateObject ("InternetExplorer.Application")

oIE1.Navigate "http://www.yahoo.com"
oIE1.Visible = 1
oIE1.AddressBar = 0
oIE1.StatusBar = 0
oIE1.ToolBar = 0
oIE1.MenuBar = 0

No entanto, a minha solução preferida foi a desse outro Blog. O VB Script publicado aqui é bem mais robusto e reutilizável. Nesse caso, basta chamar o script e passar como parâmetro a URL da aplicação Web.

Set objArgs = WScript.Arguments 
If objArgs.Count = 0 Then 
 WScript.Echo "No URL provided, please supply a URL to open" & VbCrLf & VbCrLf & "e.g. CScript OpenURL.vbs http://www.google.com" 
 wscript.quit
End If

Set objIE = CreateObject("InternetExplorer.Application")

With CreateObject("internetexplorer.application") 
 .navigate "about:blank" 
 With .document.parentWindow.screen 
 iHeight = .height 
 iWidth = .width 
 End With 
End With

objIE.StatusBar = False 
objIE.Visible = True 
objIE.AddressBar = False 
objIE.MenuBar = False 
objIE.ToolBar = False 
objIE.Top = 0 
objIE.Left = 0 + 8 'Move to the side just a bit to show the desktop
objIE.Width = iWidth - 16 'Shrink to let a bit of the desktop show on the sides
objIE.Height = iHeight - 28 'Shrink a bit to see the taskbar
objIE.Navigate (objArgs(0))

A publicação de uma aplicação Web no XenDesktop utilizando essa ferramenta ficaria mais ou menos assim:

Internet Explorer chamado através do VBScrit
Internet Explorer chamado através do VBScript

Fontes: JasonSamuel.com, Citrix Discussions

 

Alterar Windows Server 2012 R2 de Core para interface gráfica de usuário (GUI)

Desde a versão Windows Server 2008 R2 é possível optar pela instalação do Sistema Operacional com a interface gráfica (with GUI) ou sem ela (server core installation).

No entanto, no Windows Server 2012 e 2012 R2 a instalação da interface gráfica é um componente que pode ser instalado ou removido a qualquer momento.

Se você instalou o Windows Server 2012 R2 sem a interface gráfica (Server Core) e precisa – ou deseja – alterar essa característica, será necessário um repositório que contenha todos os arquivos de instalação. Normalmente esses arquivos estão armazenados em <%WINDIR%>\WinSxS\. Caso eles não estejam mais disponíveis é possível utilizar também a imagem padrão disponível no DVD de instalação do Sistema Operacional. Para isso, localize na mídia o arquivo “Install.wim” dentro do diretório D:\sources\ (supondo que “D:\” seja o seu drive de CD).

No prompt de comando execute o PowerShell para identificar as imagens do Windows disponíveis no arquivo. Verifique o Index das imagens que não se referem a Server Core e que correspondam ao seu tipo de licença (Standard ou Datacenter).

Get-WindowsImage -ImagePath:D:\Sources\Install.Wim

Get-WindowsImage
Index das Imagens disponíveis na mídia

Para identificar as funcionalidades que precisam ser habilitadas execute no PowerShell o seguinte cmdlet:

Get-WindowsFeature

Como resultado, esse cmdlet listará todas as features disponíveis para o Sistema Operacional e identificará as instaladas com o [X]. Os componentes de Interface Gráfica estão aninhados em “User Interfaces and Infrastructure“:

Get-WindowsFeature
Resultados do cmdlet Get-WindowsFeature

Portanto, para instalar a interface gráfica do Windows Server execute o cmdlet Install-WindowsFeature no PowerShell conforme abaixo:

Install-WindowsFeature -Name server-gui-shell,server-gui-mgmt-infra -source: D:\sources\install.wim:2 -restart

O parâmetro “:2” refere-se ao número do Index da imagem. Neste caso, indica que a imagem utilizada é a “Windows Server 2012 R2 SERVERSTANDARD”.

Após o término da execução será necessário reiniciar o servidor.

Habilitar o Gerenciamento Remoto do Windows Server 2012 R2 em servidores com Windows Server 2008 R2

As ferramentas de gerenciamento remoto do Windows Server 2012 R2 são uma mão na roda para administrar servidores no ambiente.

Elas proporcionam fácil acesso a uma série de recursos administrativos e possibilitam criar um ponto único de contato, tornando rápido identificar e solucionar problemas em servidores.

Entretanto, essas ferramentas só estão disponíveis de forma nativa no Windows Server 2012 em diante.

Embora seja possível adicionar um servidor com Windows Server 2008 R2 ao grupo de gerenciamento, o painel exibirá um erro e, ao tentar gerencia-lo, recebemos a mensagem:

Online - Verify WinRM 3.0 service is installed, running and required firewall ports are open
Console de gerenciamento remoto do Windows Server 2012 R2
Console de gerenciamento remoto do Windows Server 2012 R2

Para habilitar o gerenciamento remoto em servidores Windows Server 2008 R2 é necessário instalar:

Depois de instalado os dois pacotes, será necessário configurar o WinRM para “escutar” solicitações de gerenciamento remoto. A forma mais rápida de se fazer isso é executar o comando a seguir com permissões elevadas:

winrm quickconfig

Aceite a criação do listener sugerido e verifique que a configuração ocorreu sem erros.

Configuração do WinRM 3.0
Configuração do WinRM 3.0

Depois disso, atualize a console de gerenciamento remoto no servidor e verifique que o gerenciamento está ocorrendo.

Windows Server 2012 – ADFS 2.1 – Erro MSIS7613:The signing certificate of the relying party trust is not unique across all relying party trusts in AD FS 2.0 configuration

Ao tentar utilizar um mesmo certifcado para entradas diferentes utilizando o ADFS 2.0, aparece a mensagem:

MSIS7613: The signing certificate of the relying party trust is not unique across all relying party trusts in AD FS 2.0 configuration”

O Rollup 3 disponibilizado pela Microsoft permite corrigir este erro facilmente, conforme pode ser visto neste excelente post do Paul Williams, ou em outros tantos pela internet. Entretanto, este Rollup só pode ser aplicado no Windows Server 2008 r2.

No Windows Server 2012, o ADFS 2.1 é instalado como uma Role, e esperava-se que este problema não ocorresse mais, porém não foi o que observei. Ao tentar encontrar a solução para este problema,  deparei-me com a inexistência (até o momento) de atualizações para o ADFS 2.1.

Deste modo, encontrei uma alternativa para solucionar isso:

  • Separe uma maquina de testes com Windows Windows Server 2008 R2 e instale o ADFS 2.0 e o Rollup 3.
  • Após a instalação abra a pasta “C:\Program Files\Active Directory Federation Services 2.0\SQL” e copie os seguintes arquivos:
    • IdentityServerAttestation.cer
    • IdentityServerAttestation.dll
    • IdentityServerAttestation.sql
    • PostReleaseSchemaChanges.ps1
Copiar os arquivos do ADFS 2.0
Copiar os arquivos do ADFS 2.0
  • Cole os arquivos no seu servidor Windows Server 2012, em “C:\Windows\Adfs\SQL\”;
  • No servidor Windows Server 2012, clique com o botão direito sobre PostReleaseSchemaChanges.ps1 e selecione editar;
  • Altere a linha 6, 8 e 9 do script, substituindo a variável “$env:ProgramFiles\Active Directory Federation Services 2.0\” por “$env:windir\ADFS\“:
Alterando o Script
Alterando o Script
Script Alterado
Script Alterado
  • Salve as alterações e feche o arquivo;
  • Execute o PowerShell como Administrador e execute o script;