说,我有一个安装程序,用于将某些组件安装到某些默认路径(并且我让用户将默认路径更改为他想要的任何路径):
<!--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>
但是,此更改将触发重新计算组件的向导。
现在,如果我使用此新版本升级产品(我的安装程序能够检测到原始的ver1.0安装位置并将INSTALLFOLDER
设置为升级期间的位置),我将违反组件规则,因为我会将完全相同的文件安装到相同的位置,但使用不同的组件guid。
问题是,如果我决定更改产品的默认安装文件夹,什么是正确的方法?