我正在使用RegistrySearch来设置属性,这是我的目录之一,我看到当注册表值不存在而不存在目录值的子目录时,为什么会这样?
在我的情况下,如果目标目录不存在,ROLESDIR将被设置为空(当注册表仍然指向它时) - >最终结果是RoleDir将直接安装在CONFDIR下
<Property Id="ROLESDIR">
<RegistrySearch Id="ROLESDIRRegistry" Type="directory" Root="HKLM" Key="Software\DummyName\UCM" Name="ConfRolesDirectoryPath" />
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="SDIR">
<Directory Id="CONFDIR" Name="Conf">
<Directory Id="ROLESDIR" Name="Roles">
<Directory Id="RoleDir" Name="MyRole" />
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
答案 0 :(得分:2)
你的问题不是很明确,
您能举例说明注册表值吗?
我过去曾经使用过它。
<Property Id="INSTALLDIR">
<RegistrySearch Id="INSTALLDIRRegistry" Type="raw" Root="HKLM" Key="Software\Manufacturer\Product" Name="InstallDir" />
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="ProductName">
这会将INSTALLDIR设置为注册表值中路径的位置。我认为在你的情况下,你试图设置一个文件夹的路径,该文件夹已经有一个由wix代码定义的路径。
你可能想尝试这样的事情
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ROLESDIR" Name="Roles">
<Directory Id="RoleDir" Name="MyRole" />
</Directory>
<Directory Id="ProgramFilesFolder">
<Directory Id="SDIR">
<Directory Id="CONFDIR" Name="Conf" />
</Directory>
</Directory>
</Directory>
希望有所帮助