Скажем, у меня есть установщик, который устанавливает какой-то компонент по некоторому пути по умолчанию (и я позволяю пользователю изменять путь по умолчанию на все, что он хочет):
<!--ver 1.0-->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SomeFolder1" />
</Directory>
</Directory>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="Comp1" Guid="*">
<File Id="file1.dll" Source="$(var.SourceFolder)\file1.dll"/>
</Component>
</DirectoryRef>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property>
Этот компонент имеет автоматически сгенерированный guid.
Допустим, в какой-то более поздней версии моего установщика все, что я хотел бы сделать, это изменить путь по умолчанию на что-то еще:
<!--ver 2.0-->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="SubFolderId" Name="SubFolder" />
<Directory Id="INSTALLFOLDER" Name="SomeFolder1" />
</Directory>
</Directory>
Однако это изменение приведет к тому, что guid моего компонента будет будет пересчитан.
Теперь, если я обновлю свой продукт до этой новой версии (мой установщик может определить исходное место установки версии 1.0 и установит INSTALLFOLDER
для него во время обновления), я нарушу правила компонента , поскольку я буду устанавливать точно такой же файл в то же место, но с другим идентификатором компонента.
Вопрос в том, что если в какой-то момент я решил изменить папку установки по умолчанию для своего продукта, что будет правильным как это сделать?