2010-07-20 6 views
0

Je dois empêcher l'exécution de la méthode Installer.Commit dans mon code managé CustomActions. Si je ne fais rien à l'intérieur de la méthode Commit écrasée, il valide toujours (il crée un élément dans la liste Programmes et fonctionnalités) et je ne le veux pas.Comment empêcher l'exécution de Installer.Commit()?

Si je dis base.Commit (null), il s'arrête, mais affiche une erreur. Comment puis-je le faire en silence sans aucun message? Puis-je modifier savedState d'une manière ou d'une autre afin de ne pas valider l'installation?

+0

Avez-vous besoin de compter sur un installateur en premier lieu? Vous semblez travailler contre les fonctionnalités de base fournies par MSI alors peut-être qu'une approche totalement différente peut être plus appropriée? –

+0

Oui. Je dois compter sur l'installateur. Mais à ce moment-là, je dois ignorer Commit(). Ou s'il est impossible de simplement l'ignorer, j'ai besoin de supprimer du registre toutes les informations sur le programme installé ... Je ne peux pas appeler msiexec.exe car, cela ne fonctionnerait pas. Un autre processus (le thread principal de l'installation fonctionne déjà sous msiexec.exe) ... – Agzam

Répondre

1

La validation n'est pas responsable de la publication de votre produit dans ARP. Windows Installer le fait via l'action standard PublishProduct et vous pouvez le désactiver à l'aide de la propriété ARPSYSTEMCOMPONENT, sauf que l'outil de création d'installation que vous utilisez n'expose pas cela (ou à peu près tout ce que MSI peut faire).

http://msdn.microsoft.com/en-us/library/aa367750(v=VS.85).aspx

Si vous voulez avoir un installateur de haute qualité que vous ne devriez pas utiliser vdproj ou des actions personnalisées InstallUtil/InstallerClass.

0

Dans ce cas, je n'ai pas trouvé de solution mais en supprimant les entrées de registre juste après Commit().

J'ai supprimé toutes les clés

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ Produits où la valeur UninstalString contient ProductCode (GUID de l'application)

I également supprimé une clé de HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Désinstaller où le nom de la sous-clé == ProductCode

Je suppose qu'il reste quelque chose. Je ne suis pas sûr.

Questions connexes