2010-04-29 7 views
6

Comment désinstaller par programmation un programme Silverlight 4 hors-navigateur au lieu d'utiliser le menu contextuel (par exemple, si je veux remplacer le menu contextuel)?Désinstallation par programme de l'application Silverlight hors-navigateur

Modifier

J'ai trouvé dans "Installing Silverlight applications without the browser involved" comment désinstaller en appelant la ligne de commande:

"% ProgramFiles% \ Microsoft Silverlight \ sllauncher.exe"/désinstallation/origine: silverlight .net/contenu/samples/apps/...

Ceci peut être utilisé dans: -

dynamic cmd = AutomationFactory.CreateObject("WScript.Shell"); 
cmd.Run(run, 1, true); 

Y a-t-il une meilleure solution?

+0

J'ai trouvé dans http://timheuer.com/blog/archive/2010/03/25/ à l'aide-sllauncher-pour-silencieux-install-silverlight-Application.aspx comment désinstaller en appelant la ligne de commande: "% ProgramFiles% \ Microsoft Silverlight \ sllauncher.exe" /désinstallation /origine: http://www.silverlight.net/content/samples/apps/facebookclient/ClientBin/Silverface.xap Cela peut être utilisé dans dynamic cmd = AutomationFactory.CreateObject ("WScript.Shell"); cmd.Run (exécution, 1, vrai); Une meilleure solution est-elle disponible? –

+0

Veuillez utiliser la fonction d'édition de questions pour inclure des informations supplémentaires plutôt qu'un commentaire. – AnthonyWJones

+3

Je me demande aussi, comment faire cela sur Mac? Gosh ... même dans la cinquième version de SL, certains hors de la substance du navigateur semble si sacrément laid. Pourquoi ne puis-je pas appeler directement l'application depuis le navigateur si elle est déjà installée? Pourquoi ne puis-je le désinstaller (je veux dire dans le code)? Pourquoi CheckAndDownloadUpdateAsync() ne fonctionne pas toujours ... – Agzam

Répondre

1

Jolie certain que ce n'est pas possible sans avoir recours à COM Interop comme le dit Mike, aussi je doute si elle est une bonne idée depuis:

1) Suppression de l'option de désinstallation sera sans aucun doute gêner de nombreux utilisateurs et est une mauvaise pratique. 2) Vous dites que vous cherchez à implémenter un nouveau menu contextuel? À moins qu'il s'agisse d'une application métier, je m'en méfierais, car de nombreux utilisateurs ne seront pas habitués à accéder aux menus contextuels d'une application Web, ce qui est pour moi une mauvaise interface. Si c'est une application métier, ajouter/supprimer des programmes serait une bonne solution?

+0

Vous pourriez aussi avoir un bouton à installer, et un autre à désinstaller (était mon cas). Le remplacement du menu clic droit m'a aussi été utile, pour mettre des choses très avancées, mais perdre la commande de désinstallation m'a forcé à oublier cette solution. – jv42

1

La solution que vous avez mentionnée est toujours la seule façon de le faire. C'est une belle touche mettre un Application.Current.MainWindow.Close(); après cela car l'application sera toujours en cours d'exécution après la désinstallation.

Marc

1

Ce n'est pas une réponse, mais c'est lié à votre problème. Sur la liste de souhaits officielle Silverlight, j'ai ajouté la possibilité de le faire il y a un certain temps. Heureusement, très peu d'utilisateurs sont d'accord. Avec suffisamment de votes, j'espère qu'il apparaîtra dans une future version de Silverlight.

http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/410706-greater-control-over-installation-in-oob

0

Vérifiez ici ma solution: je Unable to Uninstall SIlverlight Out Of Browser Application Programatically utilisé le code dans l'application de la console qui a été exécuté par l'application silverlight qu'il a été désinstallez. Silverlight extrait le fichier EXE comme une ressource à l'un des répertoires, puis a couru en utilisant quelque chose comme ce qui suit:

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell")) 
{ 
    shell.Run(@"C:\Users\yourusername\AppData\update.exe xapNameToUninstall"); 
} 
Questions connexes