使用RegistrySearch设置目录不存在目录不起作用

时间:2010-02-25 23:04:55

标签: wix wix3

我正在使用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>

1 个答案:

答案 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>

希望有所帮助