Dans un article précédent, je vous détaillais comment installer les différents composants d’un serveur App-V (Management & Publishing serveur) de manière à pouvoir publier des packages App-V. Aujourd’hui, je vous propose de nous intéresser à la partie cliente et applicative c’est-à-dire comment packager (ou séquencer) une application au format App-V de manière à la publier sur un serveur qui, à l’aide du client App-V, sera capable de l’exécuter.
Comme chaque fois, j’essaie de faire quelque-chose qui sera facile à reproduire dans le cas où vous souhaiteriez tester ça chez vous sur une infra minimaliste.
Pour ce test, nous allons donc disposer de 3 machines virtuelles de test :
- (VM1) 1 VM sur laquelle j’ai installé la partie serveur d’App-V (Management et Publishing) et que vous pouvez retrouver en suivant le lien vers cet article (2008 R2),
- (VM2) 1 VM vide/saine « cible » sur laquelle vous allez effectuer le sequencing (packaging) de l’application (cette VM ne sert que pour la création du package) (2008 R2).
- (VM3) 1 VM de test qui dispose du client App-V et sur laquelle nous allons publier l’application que nous aurons packagé (2008 R2).
- + 1 partage réseau sur autre VM ou n’importe où ailleurs mais qui sera accessible par le serveur App-V et la VM qui disposera du client App-V (sur l’AD DS dans mon cas pour l’exemple)
Et bien sûr, votre infra de test doit comprend également le serveur de base de données qui héberge la DB pour le serveur App-V et bien sûr un contrôleur de domaine avec un domaine test.
Avant de pouvoir publier une application test, nous devons réaliser notre package virtuel de l’application cible. Dans le cas présent, je ne vais pas innover et choisir NotePad++ (profitez en pour récupérer les sources, on en aura besoin plus tard). Je m’attarderai davantage sur le fonctionnement du client App-V et les lignes de commandes PowerShell qui peuvent être utiles dans ce genre de circonstances.
Etape 1 : Installation du séquenceur App-V (V5.0 SP2) sur VM2
Avant de pouvoir packager une application, vous devez provisionner une machine virtuelle de test sur laquelle vous allez installer le séquenceur App-V (VM2 dans le cas présent pour nous).
Dans le cas présent, j’utilise App-V v5.0 SP2 et ma VM tournera sous Windows Server 2008 R2 avec les derniers correctifs disponibles à date. Personnellement, je dispose d’un script qui installe un certain nombre de prérequis pour ce genre de VM de packaging. Tout n’est peut-être pas nécessaire mais jusqu’à présent cela m’a toujours fait gagné du temps donc libre à vous de suivre la liste de ces prérequis (ou non) :
- Activation de .NET Framework 3.5.1 (depuis le Server Manager)
- Installation des Microsoft Visual C++ 2005, 2008, 2010, 2012, 2013 (x86 + x64)
- Installation de .NET Framework 4.5.1 SP1 (KB2858728)
- Installation de Windows Management Framework v3.0 (KB2506143)
- Installation du correctif KB2533623
- Redémarrage de la machine (même si elle ne le demande pas)
Une fois que l’on a tous ces composants, on peut ensuite installer le Sequenceur App-V. Personnellement, j’utilise la version v5.0 SP2. Si vous avez téléchargé les sources depuis le site de Microsoft ou votre MSDN, vous devriez pouvoir exécuter la commande suivante :
APPV_SEQUENCER_SETUP.EXE /ACCEPTEULA=1 /CEIPOPTIN=0 /QUIET
Mais si vous préférez la version manuelle, il vous suffit de suivre les captures d’écran ci-dessous :
Cliquez sur Install et voilà c’est terminé !
Avant d’aller plus loin, effectuez un dernier redémarrage même si rien ne vous est demandé expressément.
Etape 2 : Packaging / Sequencing de votre application
Le séquenceur App-V est maintenant installé. Nous disposons également des sources d’installation de l’application sur la VM de test. Alors allons-y ! 🙂
Démarrez le séquenceur App-V depuis le menu Démarrer.
Vous avez déjà redémarrer votre VM vous devriez donc avoir exactement la même fenêtre que moi.
Certaines applications nécessitent de redémarrer l’ordinateur pour s’installer ; le séquenceur App-V est capable de reprendre le packaging d’une application après un redémarrage. Ce n’est pas notre cas pour aujourd’hui, nous continuons.
Cliquez sur Next.
Je n’ai pas encore rencontré de cas complexes et dans la majorité l’option numéro 1 suffit.
C’est un choix personnel, c’est un peu plus long, mais avec le Perform a custom installation vous serez certains de bien capturer l’ensemble de l’installation de l’application (ainsi que la personnalisation que vous souhaitez intégrer dans le package).
Spécifiez maintenant le nom de votre application ainsi que l’emplacement dans lequel vous allez installer l’application. Vous pouvez tout à fait utiliser l’emplacement par défaut qui sera créé par l’application ou bien le changer. Nous, nous allons le modifier ! Dans tous les cas, le Primary Virtual Application Directory et le répertoire d’installation que vous choisirez lors de l’installation de l’application doivent correspondre ! J’y reviendrai.
Nous arrivons sur cette fenêtre. Laissez-là à l’arrière-plan, c’est maintenant le moment d’installer notre application en suivant l’assistant standard fournit par l’éditeur. Je double-clique sur l’exécutable de NotePad++ (en laissant bien le séquenceur App-V fonctionnait à l’arrière-plan).
(Je ne vais afficher que les captures les plus essentielles pour l’installation de NotePad++)
Je modifie bien le chemin d’installation de l’application en accord avec le Primary Virtual Application Directory que j’ai choisi précédemment.
L’installation de notre application est maintenant terminée.
Attention, pour des applications plus complexes, il est important de noter que si vous souhaitez personnaliser la configuration de l’application vous devez réaliser effectuer le paramétrage à ce moment de l’opération. De cette manière le séquenceur App-V intégrera également ce paramétrage comme « configuration par défaut » pour votre package.
Imaginons par exemple que nous voulons empêcher NotePad++ de mémoriser les fichiers précédemment ouverts (fonctionnalité qui m’exaspère et qui est configurée ON par défaut). J’ouvre donc NotePad++ et je modifie le réglage en question.
Nous avons terminé l’installation de notre application, nous pouvons poursuivre sur le séquenceur App-V.
Le séquenceur App-V analyse les changements effectués sur notre VM.
Exécutez l’application au moins une fois pour vérifier que tout est OK puis cliquez sur Next.
Le warning vous informe d’emplacements spécifiques connus comme étant des emplacements de stockage temporaires et qui sont ignorés lors du séquençage. Cela peut par exemple correspondre au répertoire dans lequel une archive auto-extractible se décompresse avant de lancer l’installation. L’ensemble des fichiers ou dossiers créés dans ces répertoires est ignoré et ne sera pas intégré dans notre package final.
Cliquez sur Next.
Là encore, on pourrait s’arrêter mais je préfère vous montrer toutes les options alors on va encore rajouter des étapes. Sélectionnez Customize et cliquez sur Next.
Cochez la case en bas si vous souhaitez que votre application soit téléchargée en entier avant de pouvoir être exécutée (évitant l’exécution à la volée = streaming).
Encore une fois, on choisit la méthode la plus longue et on choisit Continue… puis Close. Votre package est maintenant terminé !
Comme dans la plupart des outils de packaging, vous pouvez maintenant vérifier le contenu de ce qui a été capturé pendant l’installation de NotePad++ et éventuellement l’épurer en ajoutant ou supprimant certaines options.
Dans l’onglet Properties, vous pouvez spécifiez n nom, une description… et visualiser le Package GUID qui correspond à l’identifiant du package App-V.
Dans l’onglet Deployement, vous pouvez restreindre l’exécution de l’application à certains OS.
Dans l’onglet Change History, vous verrez les différentes versions de votre package. Là, nous en sommes à la première version mais chaque fois que vous le modifiez, il y aura une version différente.
Dans l’onglet Virtual Registry, vous pouvez visualiser les changements / actions que le package réalise sur la base de registre. Vous pouvez éventuellement ajouter des changements ou en supprimer (en fonction de leur pertinence).
Dans l’onglet Package Files, vous pouvez également épurer les différents fichiers et/ou dossiers à incorporer dans votre package. Par exemple, pour NotePad++, on pourrait imaginer que je veux supprimer différents thèmes ou langages pris en charges.
Dans l’onglet Virtual Services, vous retrouvez la liste des services si l’installation de votre application a généré des services.
Et enfin, l’onglet Shortcuts et FTAs, pour spécifier des raccourcis supplémentaires ou en supprimer.
Mais vous l’aurez compris, pour modifier tous les réglages que nous venons de passer en revue, cela suppose que vous connaissez de manière approfondie l’application en question et que les modifications manuelles que vous allez réaliser ne vont pas altérer le bon fonctionnement de votre application !
Notre package est maintenant prêt. Il nous reste à le sauvegarder.
La génération du package peut prendre un peu de temps en fonction du poids de l’application. Parfois, cela peut se traduire par un freeze du séquenceur App-V, soyez patient, c’est juste la sauvegarde qui prend du temps.
Dans mon cas, je le sauvegarde directement sur le Bureau pour pouvoir facilement le récupérer par la suite et le mettre sur le partage réseau dont je vous parlais tout au début de l’article.
Notre package est prêt le contenu se présente comme dans la capture ci-dessus. C’est le fichier portant l’extension .APPV que nous chargerons dans la console App-V.
Important : Lorsque vous réaliser votre package il est important de réaliser le minimum possible d’actions sur votre machine de test. De cette manière, vous ne capturez que les éléments qui correspondent à votre application et aucun élément parasite qui proviendrait d’une autre application ou processus.
Etape 4 : Installation du client App-V (sur VM3)
Avant de pouvoir tester notre package, nous devons maintenant installer le client App-V qui va nous permettre de recevoir le package depuis le serveur App-V (Management & Publishing Server).
Pour ce faire j’installe le client App-V for RDS 5.0 SP2 (après avoir installé les mêmes prérequis que précédemment). Concrètement ça ressemble aux étapes suivantes :
Voilà, c’est terminé. Rien de spécial et aucune configuration… pour l’instant ! 😉
Il nous reste à configurer le client App-V pour qu’il pointe sur notre serveur App-V. Dans mon cas, je dispose de la configuration suivante :
- VM1 – Serveur App-V : 10.0.0.16
- VM3 – Client App-V : 10.0.0.15
Si vous avez suivi mon précédent article, vous savez que le Management et le Publishing Server dispose tous les deux d’une URL qui peut-être interroger.
Le but est maintenant de faire pointer le client App-V sur le Publishing Server App-V (et donc sur le port 80). Dans mon cas l’URL sera donc la suivante : http://10.0.0.16:80. D’ailleurs si vous essayez de visiter cette URL avec votre navigateur, vous devriez voir un page comme celle-ci qui présent les différents packages disponibles en XML.
Comme vous le voyez pour l’instant, je n’ai pas encore publié NotePad++ et il n’y a qu’une application actuellement disponible. Il s’agit du client UI d’App-V qui est un package app-v fournit par Microsoft et que je souhaitais tester.
Notez également, que comme je le mentionnais précédemment, les packages App-V sont disponibles sur mon partage réseau qui se trouve sur la VM jouant le rôle d’AD DS et dont l’adresse IP est ici : 10.0.0.11.
En général, l’association du client App-V avec le serveur App-V (Publishing) est une action qui est réalisée par GPO (et vous retrouverez d’autres articles qui traitent du sujet) mais je vous propose de faire plus rapide pour notre test et de réaliser l’action directement en PowerShell.
Sur VM3, qui dispose du client App-V, saisissez les commandes suivantes :
Import-Module appvclient Add-AppvPublishingServer -Name “AppVServer” -URL http://10.0.0.16:80 Sync-AppvPublishingServer -ServerId 1
Ces 3 commandes vous permettent successivement d’importer la librairie des CmdLet App-V, puis d’associer votre client App-V à votre Publishing Server App-V et enfin de forcer le rafraîchissement du serveur #1 (nous ne disposons que d’un seul et unique serveur App-V dans notre cas). De cette manière, si des packages sont déjà publiés ils seront descendus automatiquement sur notre VM.
A cette étape-là :
- Notre client App-V est prêt et configuré.
- Notre package App-V pour NotePad++ est sur le partage réseau (dans un dossier quelconque) et accessible pour l’ensemble de nos VM.
- Nous allons maintenant publier notre package.
Etape 5 : Publication du package App-V
Votre package est prêt.
Afin que le serveur / desktop client qui dispose du client App-V puisse accéder au package de la même façon que le serveur App-V, il est d’usage de positionner les packages App-V sur un partage réseau qui sera accessible par les deux VM.
Il nous reste maintenant à publier l’application en accédant à la console App-V. Encore une fois, j’ai précisé les différentes étapes de provisionnement de la base de données et d’installation du serveur App-V sur cet article.
J’accède donc à la console web (SilverLight) d’App-v en me connectant à l’URL suivante : http://serveur-app-v:8080/Console.html (dans mon cas le serveur App-V est en 10.0.0.15).
J’indique l’emplacement de mon package en précisant le chemin à partir de mon partage réseau et je clique sur Add.
Mon package est ajouté, il ne reste plus qu’à le publier et lui donner des droits d’accès.
Dans AD ACCESS, spécifiez les groupes d’utilisateurs AD qui peuvent accéder à cette application. Dans le cas présent et comme c’est un test, vous pouvez utiliser Domain Users ou n’importe quel autre groupe AD de votre infra test. Mais il doit obligatoirement s’agir d’un groupe AD (pas d’utilisateur standalone).
Vous trouverez bien sûr d’autres options pour notamment configurer les raccourcis pour accéder à l’application, je vous laisse le soin de naviguer un peu dans la console App-V, ce n’est pas bien compliqué.
Il nous reste à publier l’application, en cliquant sur Publish depuis le menu contextuel.
Si nous retournons maintenant sur notre VM de test, nous devrions voir notre application NotePad++ apparaître. Si ce n’est pas le cas, c’est qu’il faut forcer le rafraîchissement pour que le client App-V aille chercher les nouvelles applications.
On utilise la commande précédente :
Sync-AppvPublishingServer -ServerId 1
Vous devrez également ré-importer les CmdLet App-V si vous aviez fermé l’invite de commandes PowerShell que nous avions précédemment utilisé ! 😉
Par défaut, le rafraîchissement étant de 10 minutes c’est la raison pour laquelle nous avons forcé le rafraîchissement (valeur pouvant être modifiée dans la base de registre).
Il ne nous reste plus qu’à tester et voir si l’application a bien été poussée sur notre serveur ! 🙂
Notre NotePad++ est bien présent avec l’ensemble des raccourcis que nous avons bien voulu laisser (notamment dans le menu Démarrer). Et si vous vérifiez dans les options vous verrez que notre changement de réglage a bien été pris en compte comme option par défau dans notre package puisque l’option Remember current session… est bien désactivée par défaut désormais.
Si vous vérifiez dans les propriétés d’un des raccourcis associés à NotePad++ vous pourrez vérifier que l’application n’est pas présente dans son emplacement standard mais s’exécute bien dans une bulle virtuelle depuis l’emplacement du client App-V.
Si maintenant, vous décidez de dépublier l’application au niveau de la Console App-V et que vous forcer encore une fois le rafraîchissement alors l’application disparaîtra automatiquement de votre VM ! 🙂
Voilà, vous savez tout pour réaliser vos propres packages et les tester dans votre infra test.
Pour aller plus loin
Pour finir, voici quelques commandes PowerShell qui pourront vous être utiles avec le client App-V :
- Pour afficher la liste des serveurs de publication App-V
Get-AppvPublishingServer
- Pour synchroniser un serveur de publication
Sync-AppvPublishingServer index
- Pour afficher la configuration du client
Get-AppvClientConfiguration
- Pour afficher les packages publiés
Get-AppvClientPackage
- Pour supprimer les packages publiés
Remove-AppvClientPackage
- Et enfin pour voir toute la liste des commandes disponibles :
Get-Command -Module AppVClient
N’oubliez pas de consulter mon article précédent pour savoir comment déployer la partie serveur d’App-V en suivant ce lien.
Si vous avez des questions, n’hésitez pas ! 🙂