2011-06-23 5 views
1

Plus tôt nous avons publié une application. Plus tard, une nouvelle version de l'application a été publiée, mais avec un nom d'application différent. Mais ces deux applications placent des fichiers dans le même dossier de programme. Mais nous avons deux versions différentes répertoriées dans les programmes de désinstallation.Désinstallation par programme d'un programme en utilisant C#

Maintenant que nous voulons sortir une version plus récente. Nous voulons désinstaller la toute première version du PC de l'utilisateur. comment puis-je y parvenir en utilisant C#. Nous utilisons Windows 7 64 bits (l'application est de 32 bits et installée dans le dossier x86).

Je n'ai pas la configuration de l'application ni l'application clé

bien vouloir me aider.

+0

un appel à 'msiexec/u' peut-il faire l'affaire? –

+0

comment ces différentes versions sont-elles installées? En utilisant msi? Connaissez-vous les codes de produits et les codes de mise à jour du msis? –

Répondre

0

Jetez un oeil à la classe COM WindowsInstaller. Vous devrez ajouter une référence à la classe WindowsInstaller pour y accéder. De là, vous pouvez parcourir le MSI et effectuer des actions dessus si nécessaire. J'utilise ceci dans mon post build pour modifier l'archive pour corriger une ... fonctionnalité non documentée de Visual Studio.

// Create an Installer instance 
MsiInstaller = Activator.CreateInstance(Type.GetTypeFromProgID("WindowsInstaller.Installer")) as WindowsInstaller.Installer; 
// Open the msi file for Read/Write 
MsiDatabase = MsiInstaller.OpenDatabase(MsiFile.FullName, MsiOpenDatabaseMode.msiOpenDatabaseModeTransact); 
1

Si vous êtes application ne peut pas le détecter est première version (autre nom), que vous devriez probablement supprimer des données de lieux où ces deux applications interfère. Vous pouvez le faire avec File.Delete(); mais si ces fichiers sont quelque part où l'application n'a pas d'autorisation, vous devez forcer l'exécution en tant qu'administrateur en ajoutant un fichier manifeste et remplacer cette ligne.

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
Questions connexes