2010-10-29 9 views
1

Je suis en train d'obtenir ce qui suit pour travailler:WiX ScheduleReboot Conditions

Sur la première installation d'un programme, il modifie les variables d'environnement du système, et donc vous devez redémarrer pour que le programme fonctionne pleinement . Faire cela dans Wix est assez simple, vous planifiez juste un redémarrage:

<InstallExecuteSequence> 
    <ScheduleReboot After="InstallFinalize" /> 
</InstallExecuteSequence> 

Le problème que j'ai est que je veux être en mesure de faire des améliorations mineures à ce programme (ceux où les changements de numéro de version, mais le produit GUID ne fait pas) et cela ne nécessite pas de redémarrage.

Dans mes tentatives pour obtenir le redémarrage conditionnel de travail, j'ai essayé de faire est la suivante:

<Product 
    ... 
    Version="1.0.1" 
    UpgradeCode="MYUPDATEGUID-C39B-4DDE-BA5B-6113463F60C2" 
    ... 
    > 

<Upgrade Id="MYUPDATEGUID-C39B-4DDE-BA5B-6113463F60C2"> 
    <UpgradeVersion OnlyDetect="yes" Property="UPGRADING" 
        Maximum="1.0.1" IncludeMaximum="yes" /> 
</Upgrade> 

... 

<InstallExecuteSequence> 
    <ScheduleReboot After="InstallFinalize">NOT UPGRADING</ScheduleReboot> 
</InstallExecuteSequence> 

Cela tombe bien, sauf qu'il ne fonctionne pas. Peu importe ce que je fais, il essaie toujours de planifier un redémarrage.

Il semble que le problème est la propriété UPGRADING - si je remplace NOT UPGRADING avec UPGRADING, il ne demande jamais de redémarrage.

Toute idée de quelqu'un plus expérimenté que je suis serait génial.

+0

ScheduleReboot ne doit généralement pas être utilisé, et si elle est le conditionnement est crucial. [Voici quelques détails] (https://stackoverflow.com/a/48842663/129130). –

Répondre

1

Je m'interroge davantage sur votre hypothèse initiale selon laquelle vous devez redémarrer. WriteEnvironmentStrings va diffuser un WM_SETTINGSCHANGE et les applications correctement écrites doivent le respecter. À court de cas de bord comme Win 95/98 et le fait que le gestionnaire de contrôle de service est mal conçu et ignore ces messages, je pense qu'en général, vous ne devriez pas avoir besoin du redémarrage en premier lieu.

Sinon, si vous effectuez des mises à niveau mineures, pensez à utiliser la propriété Non installé. Cela l'empêchera de fonctionner pendant les réparations, la maintenance, le retrait, les mises à niveau mineures et les correctifs ultérieurs.

WriteEnvironmentStrings Action