Question

J'ai construire un msi installation à l'aide d'un projet d'installation de VS2010.

Maintenant, le projet ne deinstall à cause d'un "1001 Exception: Format non valide pour l'argument machineName". (Voir ci-dessous) à l'intérieur d'une action personnalisée

Je suis unsucessful à désinstaller l'application à l'aide de la supprimer du contrôle du système ou msiexec /uninstall.

Y at-il un moyen de désinstallation forcée?

Détails:

Dans le cadre d'une action personnalisée j'enregistrer une source d'événement personnalisé que mes application utilise pour l'événement loging dans les fenêtres log:

public override void Install(IDictionary stateSaver) {  
        base.Install(stateSaver);  
        EventLog.CreateEventSource("VeodinRecorder","Application");  
}  

à l'intérieur de la « Désinstaller » J'essaie de supprimer ce Eventsource avec

if (!EventLog.SourceExists("VeodinRecorder"))  
   EventLog.Delete("VeodinRecorder"); `

Le EventLog.Delete prend également en tant que second argument nommachine J'ai donc essayé de remplacer le msi utilisé pour la désinstallation avec msiexec /fv et changé l'action de désinstallation:

   EventLog.Delete("VeodinRecorder","."); 
   EventLog.Delete("VeodinRecorder","Application"); 

J'ai même laissé toute vide "action Désinstaller".

Mais rien ne semblait fonctionner.

Les Conseils?

Le journal complet:

Erreur 1001. Erreur 1001. Une exception est survenue lors de la désinstallation. Cette exception sera ignorée et la désinstallation se poursuivra. Toutefois, l'application pourrait ne pas être complètement désinstallé après la désinstallation est terminée. -> Format non valide pour machineName argument. MSI (s) (60 68!) [22: 49: 00: 101]:
Erreur DEBUG: 2769: action personnalisée _3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall n'a pas fermé 1 MSIHANDLEs
. Le programme d'installation a rencontré une erreur inattendue l'installation de ce package. Cela peut indiquer un problème avec ce paquet. Le code d'erreur est 2769. Les arguments sont: _3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall, 1, CustomAction _3C1D0358_8969_4B01_B8FA_B6B43F4E9E4C.uninstall a renvoyé le code d'erreur réelle 1603 (ceci pourrait ne pas être précis à 100% si la traduction est arrivé bac à sable à l'intérieur)
Fin de l'action 22:49:00: InstallExecute. Valeur de retour 3.
Fin de l'action 22:49:00: INSTALLER. Valeur de retour 3.

Était-ce utile?

La solution

Il semble que le CustomAction.dll n'a pas été mis à jour lorsque je mets à jour l'installation avec msiexec /fv.

I maintenant placé manuellement la nouvelle construction CustomAction.dll (avec une substitution de désinstallation vide) dans le dossier d'installation et a été capable de désinstaller.

Mise à jour:. (Crédits à @pcans) l'utilisation de Orca pour modifier la désactiver installée msi manuellement et l'action désinstallation personnalisée

Autres conseils

Juste référence Je veux ajouter que vous pouvez également patcher le produit installé mise à niveau mineur pour supprimer toutes les actions défectueuses dans le séquence désinstaller avant qu'il ne soit appelé. Cela fonctionne parce qu'une mise à jour mineure est une réinstallation du même produit, et non une désinstallation et une réinstallation d'une nouvelle version (qui est une mise à jour majeure). Vous remplacez donc la séquence de désinstallation avec un correct avant de celui erronous soit lancé.

Création du patch est assez compliqué mais, même avec des outils professionnels tels que Sage ou InstallShield, mais dans certains cas, cela est la seule solution qui fonctionne pour obtenir le package désinstallés. Un paquet « dans la nature » dans une entreprise doit être fixé de cette façon.

Enfin, vous pouvez utiliser msizap.exe de Microsoft pour désenregistrer un paquet défectueux ensemble de la base de données Windows Installer, mais ce n'est pas bon car les modifications du système ne sont pas annulées du tout et beaucoup de indésirable est laissé partout. L'outil lui-même semble aussi un peu fragile à certains moments, ce qui crée parfois de nouvelles erreurs qui sont vraiment difficiles à corriger. Utilisez de préférence pour le débogage .

Une autre note dans cette réponse déjà longue: un est lorsque vous exécutez une action personnalisée cas particulier uniquement pendant la séquence de désinstallation, et il renvoie alors un code défectueux de retour - parfois même si elle a effectué son ok opérations. Ces actions peuvent déclencher une très annonying " Désinstaller seule situation rollback ". Efficacement votre désinstallation est annulée quand elle touche l'action personnalisée qui n'a jamais été exécuté lors de l'installation. Cela rollback la désinstallation et donc le travail comme une installation - votre produit est laissé sur la machine. Tout à fait étrange.

La ligne de fond :. Ignorer les codes de retour pour des actions personnalisées qui sont exécutées lors de la désinstallation, utilisez d'autres mécanismes de vérification pour assurer l'action a réussi

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top