Welcome to TechNet Blogs Sign in | Join | Help

Blog de David Thieblemont [MSFT]

App-V "Microsoft Application virtualization" (Aka Softgrid) & "MDOP" news, tips....
Les scripts de personnalisation de paquets SoftGrid

Avec SoftGrid, les applications ne sont plus installées, mais poussées en mode "pré-installé", pour cette raison et d'autres, de la customization est parfois nécessaire afin de modifier des paramètres, lier le paquet à un contexte utilisateur, monter un lecteur réseau virtuel....

Pour toutes ces raisons, il est possible de spécifier des scripts autour de chaque application SoftGrid (déclaration dans le ficheir OSD). Pour mieux connaître cette fonctionnalité il est tout d'abord nécessaire de répondre aux questions suivantes "Quand" "Ou" et "Comment" qui vont déterminer la manière de référencer le script.

QUAND?

Plusieurs event peuvent déclencher un script:

  • PRE STREAM: avant le streaming de l'application (et indirectement avant l'authorization phase).
  • POST STREAM: après les étapes d'authorization et de streaming mais avant la construction de l'environnement virtuel par System Guard.
  • PRE LAUNCH: l'environnement virtuel est monté, avant le lancement de l'application.
  • POST LAUNCH: Après le lancement de l'application.
  • POST SHUTDOWN: après la fermetured e l'application( suprpesion de fichiers, copy...).

OU ?

Assez facile, il n'y que deux possibilités:

  • Protect=True: le script (ou l'application tierce) est exécuté dans la bulle virtuelle (troubleshooting...)
  • Protect=False: le script est éxécuté en dehors de la bulle virtuelle

COMMENT?

La première capacité repose sur le timeout

  • TIMEOUT=xx: le client attends xx secondes le script (puis une erreur est retournée).
  • TIMEOUT=0: le cleint attends la fin du script.

La seconde repose sur le WAIT

  • Wait=False: l'application se lance sans attendre le script.
  •  Wait=True: systemguard ne continue pas tant que le script n'ts pas terminé (exemple, non lancement de l'application avant la fin d'un script de personnalisation).

TYPE de script?

Tous les languages peuvent être lancés du moment que le client(windows) peut l'interpréter normalement (si script spécifique, les composants devront être installés sur le poste). 

2 type sont distingués :<SCRIPTBODY> & <HREF>

Les points à connaitre sont:

- Possibilité de lancer un executable (regedit, monvb.exe....)

- Possibilité de lancer des commandes DOS directement (Scriptbody uniquement)

- Contenu copié dans un bat temporaire sur le client (supprimé à la fin) pour scriptbody

- Exécution des commandes directement pour Href.

- une fenêtre DOS apparaît unqiueemnt pour scriptbody.

Les exemples qui vont bien?

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE"> <SCRIPTBODY> @echo on \n

ping 192.168.100.100 \n

net use x: /delete /y \n

net use x: \\\\ServerName\\Achieve \n

net use y: /delete /y \n

net use y: \\\\ServerName\\Achieve\\claims\\Sean \n

</SCRIPTBODY>

</SCRIPT>

</DEPENDENCY>

Note: le “\n” indique au SCRIPTBODY qu'une autre commande arrive.

********************

<DEPENDENCY>

<SCRIPT EVENT="LAUNCH" TIMING="PRE" PROTECT="TRUE" WAIT="TRUE">

<SCRIPTBODY>

net use k: \\\\w2k-pdc\\netlogon \n

CALL k:\\usr-w2k.cmd \n

\\\\sft-Microsoft SoftGrid Application Virtualization\\shr\\editini.exe c:\\word\\word.ini "FileLocations" TempPath c:\\tem \n

</SCRIPTBODY>

</SCRIPT>

</DEPENDENCY>

********************

Ici %SFT_MNT% correspond à une variable toujours présente, le point de montage (Q:\ généralement)

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE"> <SCRIPTBODY>%SFT_MNT%\\OfficeXP\\Office10\\proflwiz.exe</SCRIPTBODY> </SCRIPT>

</DEPENDENCY>

********************

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">

<SCRIPTBODY>if not exist "H:\\WINDOWS\\random.ini" copy "Q:\\app.v1\\random.ini" "H:\\WINDOWS\\" </SCRIPTBODY>

</SCRIPT>

</DEPENDENCY>

********************

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE"> <HREF>%SFT_MNT%\OfficeXP\Office10\proflwiz.exe</HREF>

</SCRIPT>

</DEPENDENCY>

********************

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE"> <HREF>cmd.exe</HREF>

</SCRIPT>

</DEPENDENCY>

NOTE: à partir d'un cmd on peut lancer pas mal de tool bien sympathique dans l'environnement virtuel.

********************

<DEPENDENCY>

<SCRIPT TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE"> <HREF>\\SRV_NAME\NT_SHR\PRE_SCRIPT.CMD</HREF>

</SCRIPT>

</DEPENDENCY>

Posted: Friday, October 12, 2007 5:20 PM by davidth
Filed under: ,

Comments

Benoît SAUTIERE said:

Chapeau bas pour ces explications. Ce sera certainement très utile pour beaucoup de monde. Ce sont des sujets qui ne sont pas réellement abordés dans le cours.

Continue comme cela!

Benoît

# October 13, 2007 6:37 AM

PERRIER Fabien said:

Bonjour,

Et savez-vous s'il est possible de lancer une application app-v en arrière plan (tache de fond) Je sais qu'avec une application en dur cela est possible. Mais je n'arrive pas à reproduire cela avec App-V.

Bien cordialement,

Fabien.

# July 29, 2009 11:30 AM

davidth said:

Hello,

Cela dépend de ce que vous souhaitez par "tâche de fond". Il n'y a pas à ma connaissance de tag app-V spécifique de tâche de fond. Néanmoins App-V supporte les lancements en tant que Service (tâche de fond en quelque sorte en ajoutant un RunOnce qui lance l'application qui n'a pas d'interface graphique)...

David

# July 29, 2009 12:50 PM

PERRIER Fabien said:

Lancer une application app-v en temps que service serait l'idéal je pense.

J'ai essayer de le faire avec diverses méthodes.

A chaque foi j'y arrive lorsque le chemin de l'application finie par .exe. Dés que j'ajoute /launch "Office Word 2003 Sp3" pour lancer Word en temps que service cela plante. Le système veut absolument une extension ...

Avez-vous des conseils par rapport au RunOnce dont vous me parlez ?

Merci pour vos conseils ;)

Fabien.

# July 30, 2009 4:48 AM

davidth said:

Pourquoi vouloir lancer Office en tant que service?

Pour avoir accès à des API office par exemple. Si tel est le cas, on peut envisager:

- De lancer office 2003 en composant obligatoire de l'application source (communication inter-bulle DC) un peu en mode add-ons (pas d'exe...)

- soit de lancer l'application au travers d'un launcher spécifique type sfttray.exe /exe <mon exe> "mon appli App-V"

Pour les runOnce, le soucis est quelle va lancer une application (exe...) si l'application ne peut pas ^tre lancée autrement (non visible, services...) on ne peut pas faire grand chose.

David

# July 30, 2009 5:45 AM

PERRIER Fabien said:

Le but est de pouvoir exécuter Word, Excel ... plus rapidement.

Aujourd'hui, le temps de lancement d'une application app-v est en moyenne de 7 à 8 secondes ... (pour le pack office).

Si je lance Word, que je le réduit dans la barre des taches, et que je lance excel par la suite, le temps d'éxécution est réduit à 1 à 2 secondes pour excel...

Mon but serait alors de monter Word dans les process au démarrage du PC, sans avoir l'interface graphique.

Tout à l'heure, j'ai réussi à accélérer l'exécution de l'application en exécutant un .bat avec la ligne de code suivante :

run sfttray.exe /exe cmd.exe "Office Excel 2003"

De cette manière l'application s'exécute en 1 à 2 secondes. Par contre je me pose plusieurs questions suite à cette méthode :

- si 200 utilisateurs utilisent ce bat pour lancer l'application, est-ce que cela peut poser soucis ?

- je ne vois pas la barre de chargement se lancer en bas à droite de mon écran. Est-ce que le fait d'utiliser l'application dans ce contexte n'est pas dangereux  et dans quel contexte l'app s'exécute ?

- est-ce que les dépendances marcheront toujours ?

- Y-a-t-il  toujours contact avec le serveur App-v en cas de mise à jour de l'application, et en cas de modification des droits ?

Voila, en gros je suis à la recherche d'une méthode quelconque pour accélérer le chargement des applications virtuelles.  

Fabien.

# July 30, 2009 8:17 AM

davidth said:

Je tenter d'apporter des éléments.

7 à 8 secondes me paraît assez long (il faudrait étudier la configuration).

La commande sfttray.exe /exe permet de lancer un exe dans le contexte de la bulle App-V. L'application App-V est donc chargé éventuellement avec ces pré-requis, mise à jour...

En terme de monté en charge, il est certain que dans un mode connecté client/server, le lundi matin à 9H00 tout le monde va lancer le même applicatif asn un temps très court (mise à jour...). A étudier en fonction du contexte.

Sur les droits pas fait de tests, mais je pense que la réponse est oui comme une application lancé classiquement.

# August 18, 2009 4:27 AM

PERRIER Fabien said:

Bonjour,

Désolé de la réponse tardive, congés oblige !!

Depuis, nous avons réussi avec Philipe L. (support Microsoft App-v) à trouver une solution. J'expliquerais tout ceci prochainement sur mon blog http://msapp-v.blogspot.com. Mais pour faire simple, nous avons integré une application (qu'on appelera KeepOpen.exe) dans la bulle qui se lance à l'ouverture de session. Cette application n'est visible que dans les processus. La bulle étant ouverte par le KeepOpen, le lancement de l'application étant amélioré.

Il me fallait trouver cette solution pour utiliser les applications App-v dans un environement poste de travail virtuel. En effet, lorsque je veux exécuter une application sur un poste de travail virtuel, cela est trés long (8 secondes environ). Sur un poste de travail classique, il ne faut qu'entre 2 à 5 secondes(5 secondes plus les plus grosses applications) pour éxecuter une application App-V.

# August 28, 2009 2:58 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker