WiX ScheduleReboot Условия - PullRequest
       8

WiX ScheduleReboot Условия

3 голосов
/ 30 октября 2010

Я пытаюсь заставить работать следующее:

При первой установке программы она изменяет переменные среды системы, и, следовательно, необходимо перезапустить ее, чтобы программа полностью заработала. Делать это в WiX довольно просто, просто запланируйте перезагрузку:

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

Проблема, с которой я столкнулся, заключается в том, что я хочу выполнить небольшие обновления этой программы (те, в которых номер версии изменяется, а GUID продукта - нет), и для этого не требуется перезагрузка.

В моих попытках заставить условную перезагрузку работать, я пытался сделать следующее:

<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>

Это замечательно, только не работает. Независимо от того, что я делаю, он всегда пытается запланировать перезагрузку.

Похоже, проблема в свойстве UPGRADING - если я заменим NOT UPGRADING на UPGRADING, он никогда не запросит перезагрузку.

Любое понимание от кого-либо более опытного, чем я, было бы потрясающим.

1 Ответ

2 голосов
/ 30 октября 2010

Мне интересно больше о вашем первоначальном предположении, что вам нужно перезагрузить компьютер. WriteEnvironmentStrings будет транслировать WM_SETTINGSCHANGE, и правильно написанные приложения должны уважать его. Если не считать крайних случаев, таких как Win 95/98, и того факта, что диспетчер управления службами плохо спроектирован и игнорирует эти сообщения, я бы подумал, что в общем случае вам вообще не нужна перезагрузка.

В противном случае, если вы делаете небольшие обновления, рассмотрите возможность использования свойства Not Installed. Это будет препятствовать его работе во время последующих ремонтов, технического обслуживания, удаления, незначительных обновлений и исправлений.

Операция WriteEnvironmentStrings

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...