2012-01-19 12 views
6

Привет Я устанавливаю файлы в каталог с помощью WIX с кодом ниже.WIX установка файлов, переопределение

<Directory Id="CMSICONSDIR" Name="CMSIcons"> 
    <Component Id="CMSICONSDIR_C" Guid="B0328FBF-D9F7-4278-B16C-28650016FF86" SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no" Location="either"> 
     <CreateFolder/> 
     <File Id="AddCamera.png" Name="AddCamera.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\AddCamera.png" KeyPath="no" /> 
     <File Id="aldownloadsmall.png" Name="al-download-small.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\al-download-small.png" KeyPath="no" /> 

Как мои приложения работают, так это то, что пользователь может копировать свои собственные файлы в этом каталоге, переопределяя их предпочтения.

Проблема заключается в том, когда я делаю следующую установку для обновления, ее переопределяет эти файлы с файлами, предусмотренными в установке.

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

К сожалению, в других случаях мне нужны файлы, которые переопределяют то, что там есть.

у меня есть раздел сценария обновления, которые могут повлиять на это, как показано ниже

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="no" Property="NEWERVERSIONDETECTED"/> 
    <UpgradeVersion Minimum="1.0.0.0" 
        IncludeMinimum="yes" 
        OnlyDetect="no" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        Property="PREVIOUSVERSIONSINSTALLED" /> 
</Upgrade> 

Любые предложения оценили.

ответ

5

Вы можете попробовать изменить порядок обновления, изменив последовательность действий RemoveExistingProducts. Вы можете разместить его после InstallFinalize (нет опции в статье ссылки).

Также статья this объясняет, как установщик Windows обрабатывает всю логику перезаписи файлов.

EDIT: добавьте атрибут «Никогда не перезаписывайте» для компонентов.

+0

Совершено и сделал NeverOverwrite = "да" Постоянная = "да" в моем компоненте, и это все еще переписывает мои предыдущие файлы , Не уверен, что я делаю неправильно – TheWommies

2

Попробуйте добавить атрибут NeverOverwrite к вашим компонентам. Это должно сделать трюк.

+0

Этого недостаточно, если действие RemoveExistingProducts до InstallExecute. – Ciprian

+0

@Ciprian - Не работает ли WIX-расписание RemoveExistingProducts после InstallExecute по умолчанию? – imagi

+0

Возможно, вы правы. У меня нет обширных знаний о WIX. – Ciprian

Смежные вопросы