2010-04-07 3 views
1

J'ai un MSI basé sur WiX qui installe un service et quelques raccourcis (et beaucoup d'autres fichiers qui ne le font pas).L'installateur MSI démarre la réparation automatique au démarrage du service

Le raccourci est créé comme décrit dans WiX docs avec une clé de registre sous HKCU comme fichier de clé. Ceci est une installation de tous les utilisateurs, mais pour passer ICE38, cette clé de registre doit être sous l'utilisateur actuel. Lorsque le service démarre (il s'exécute sous le compte SYSTEM), il remarque que cette clé de registre n'est pas valide (au moins pour cet utilisateur) et exécute à nouveau l'installation pour "réparer".

Dans le journal des événements, j'obtiens MsiInstaller Events 1001 et 1004 indiquant que "La ressource" HKEY_CURRENT_USER \ SOFTWARE \ MyInstaller \ Foo "n'existe pas." Ce n'est pas surprenant puisque l'utilisateur SYSTEM n'a pas cette clé. J'ai activé la journalisation MSI à l'échelle du système et l'auto-réparation a créé son fichier journal dans le dossier C: \ Windows \ Temp plutôt que le dossier TEMP d'un utilisateur spécifique qui semble impliquer que l'utilisateur actuel était SYSTEM (plus le fichier journal montre le "processus d'appel" pour être mon service).

Y at-il quelque chose que je peux faire pour désactiver la fonctionnalité de réparation automatique? Est-ce que je fais quelque chose de mal ou de casser une règle MSI? Des indices sur où regarder ensuite?

+0

Pouvez-vous pas ajouter le raccourci vers le menu de démarrage de la Alluser dans le système de fichiers à la place? –

Répondre

0

Séparez les composants en éléments séparés. En mettant le service dans sa propre fonctionnalité, il ne fera pas de scan pour les autres composants.

0

Si vous utilisez un raccourci publié, vous n'avez pas besoin de l'entrée de registre HKCU.

+0

Cela peut sembler étrange, mais où je travaille, nous n'aimons pas la publicité/réparation. Notre logiciel est déployé dans des environnements où bien que nous cachions le logiciel, le client n'aime pas voir les réparations, point final. –

0

you could use ActiveSetup est un système dead simple qui garantit que chaque utilisateur dispose d'un programme (généralement un programme de configuration ou un script qui configure les paramètres du registre HKCU). courir exactement une fois.

(il y a le first article linked above, quelque chose que j'ai écrit plusieurs années, compare les différentes méthodes, et si vous ne l'avez pas déjà deviné, favorise ActiveSetup ...)

Questions connexes