Главное обновление WiX! Нужны разные варианты поведения для разных компонентов - PullRequest
0 голосов
/ 01 июня 2010

Хорошо! Наконец-то я более точно определил проблему, с которой столкнулся. В моем установщике я пытался получить файл настроек REMAIN INTACT при серьезном обновлении. Я наконец получил это для работы с предложением установить

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

Это успешно вынуждает этот компонент покинуть оригинал, не заменяя его, если он существует:

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes">
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />           
</Component>

ОДНАКО! Это проблема! У меня есть еще один компонент, перечисленный здесь:

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" KeyPath="yes">
    <File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" Vital="yes"/>
<File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" Vital="yes"/>
</Component>

И этот компонент ДОЛЖЕН БЫТЬ ЗАМЕНЕН при серьезном обновлении. Я могу сделать это только установив

<RemoveExistingProducts After="InstallInitialize" />

Это нарушает первую функциональность, которая мне нужна с файлом настроек.

КАК Я МОГУ ДЕЛАТЬ ОБА?!

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Проблема в том, что settings.xml не нужно устанавливать в первую очередь, что вы действительно хотите сделать, это установить что-то вроде 'defaultSettings.xml' и иметь редактируемые пользователем настройки в отдельном месте, копируя настройки по умолчанию к пользовательской / системной конфигурации на этапе настройки после установки или при первом запуске. Если пользователь изменяет файл и запускает «восстановление», то он все равно будет перезаписан, таково поведение установщика Windows.

Если вы действительно хотите, чтобы установщик Windows «оставил файл в покое», то вам понадобится неуправляемый компонент, то есть компонент с пустым GUID. Такие как ...

<Component Id="Settings" Guid="" NeverOverwrite="yes">
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />           
</Component>
0 голосов
/ 02 июня 2010

Если кто-то не согласен, я решил, что то, что я хочу сделать, невозможно. Я пытаюсь получить некрасивый хак, используя два пользовательских действия!

Настраиваемое действие WiX с DTF ... в замешательстве

...