2010-11-11 22 views
1

Mon programme d'installation crée la clé reg sous HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Desktop \ NameSpace qui crée une icône sur le bureau lors de l'installation, mais après la désinstallation, cette icône reste jusqu'à J'appuie sur F5. Je googlé et trouvé à partir here, donc j'ajouté:VBScript pour actualiser le bureau dans Wix ou MSI

<CustomAction Id="CA_RefreshDesktopVB" Script="vbscript"> 
<![CDATA[ 
    Set WSHShell = CreateObject("WScript.Shell") 
    strDesktop = WSHShell.SpecialFolders("Desktop") 
    WSHShell.AppActivate strDesktop 
    WSHShell.SendKeys "{F5}" 
]]> 
</CustomAction> 

<InstallExecuteSequence> 
... 
<Custom Action="CA_RefreshDesktopVB" OnExit="success"/> 

Cependant, il ne rafraîchit pas quand la désinstallation terminée. Ai-je fait quelque chose de mal ou est-ce simplement au-delà de VB Script?

+0

Si vous vous connectez, la désinstallation indique-t-elle que l'action personnalisée est en cours d'exécution? – scott

+0

Oui, c'est le cas. Notez que puisque l'icône n'a pas été créée sous "Bureau" du profil utilisateur, par ex. C: \ Users \ john \ Desktop ou C: \ Users \ public \ Desktop, cela n'a pas fonctionné je pense. – Petronius

+0

Eh bien, j'ai abandonné l'utilisation de VBScript. Au lieu de cela, je viens de créer CA Type 1 en utilisant des API shell, par ex. SHGetSpecialFolderLocation() et SHChangeNotify() b/c Je sais que cela fonctionne. – Petronius

Répondre

0

AppActivate prend comme paramètre le titre de la fenêtre ou l'ID de processus de l'application (mais pas le chemin du dossier!). Dans le cas d'un bureau Windows, le titre de la fenêtre tel que rapporté par Spy ++ est "Gestionnaire de programmes" (au moins sur mon Vista anglais). Changez votre script en suivant et voyez si cela fonctionne:

Set WSHShell = CreateObject("WScript.Shell") 
WSHShell.AppActivate "Program Manager" 
WSHShell.SendKeys "{F5}"