2009-06-16 13 views
6

Lorsque je désinstalle mon service, j'obtiens l'erreur où il est indiqué que je dois arrêter tel ou tel service avant de procéder à la désinstallation. C'est insatisfaisant - le programme de désinstallation devrait l'arrêter automatiquement.Wix: Arrêt d'un service Windows lors de la désinstallation

J'ai trouvé un blog ou un groupe de discussion sur ce mois et je l'ai fait fonctionner correctement, mais maintenant il a cessé de fonctionner pour moi. Et je n'ai pas de lien vers le post ... peut-être que quelqu'un d'autre sait où c'est? :) Je suppose que j'ai changé quelque chose de subtil et ça a cessé de fonctionner. Je trouve Wix extrêmement difficile à résoudre.

J'utilise l'include suivant pour récupérer la propriété X_ WIN_ SERVICE_NAME (désolé je ne sais pas comment éviter _ d'échapper ici) du registre. Cela n'a pas d'importance à l'installation car dans ce cas, je l'ai explicitement défini avec un fichier d'entrée. Cette include est utilisée avant tout composant dans mon fichier wxs.

<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

<?ifndef SetupXWinServiceRegistryProperties ?> 
<?define SetupXWinServiceRegistryProperties ?> 

<?define XWinServiceRegistryKey='Software\X\Y'?> 

<Property Id="X_WIN_SERVICE_NAME"> 
    <RegistrySearch Id="XWinServiceNameSearch" 
        Root="HKLM" 
        Key="$(var.XWinServiceRegistryKey)" 
        Name="ServiceName" 
        Type="raw"/> 
</Property> 

<?endif?> 
</Include> 

ci-dessous comprennent le composant est utilisé pour enregistrer la valeur de Registre sur l'installation:

<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

<?ifndef WriteXWinServiceRegistryProperties ?> 
<?define WriteXWinServiceRegistryProperties ?> 

<Component Id="CompWriteXWinServiceRegistryProps" 
    Guid="some guid"> 

<!-- Write properties to the registry. Then they will be 
     accessable during uninstall. --> 

<RegistryValue Root="HKLM" 
    Key="$(var.XWinServiceRegistryKey)" 
    Name="ServiceName" 
    Type="string" 
    Value="[X_WIN_SERVICE_NAME]" 
    Action="write" /> 

</Component> 

<?endif?> 

</Include> 

J'ai vérifié mon système après l'installation et la valeur de Registre est correctement écrit. La partie dans mon composant où le service est installé ressemble à:

Des idées?

Répondre

4

Etes-vous sûr que la propriété X_WIN_SERVICE_NAME a la valeur correcte lors de la désinstallation? Utilisez un fichier journal détaillé pour vous assurer que la recherche définit correctement la valeur. Tout a l'air bien (même si je ne sais pas pourquoi vous mettez tout dans les fichiers Include au lieu de simplement utiliser des fragments).

+0

vous avez raison, ça doit avoir été quelque chose de subtil car après quelques changements sans rapport ça marche à nouveau: S – evilfred

Questions connexes