Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 使用RegistrySearch为不存在的目录设置目录不';行不通_Wix_Wix3 - Fatal编程技术网

Wix 使用RegistrySearch为不存在的目录设置目录不';行不通

Wix 使用RegistrySearch为不存在的目录设置目录不';行不通,wix,wix3,Wix,Wix3,我正在使用RegistrySearch设置一个属于我的目录的属性,我看到当注册表值为不存在的sub directory时,目录的值没有设置,这是为什么? 在我的例子中,如果目标目录不存在(而注册表仍然指向它),ROLESDIR将设置为空-->最终结果是RoleDir将直接安装在CONFDIR下 <Property Id="ROLESDIR"> <RegistrySearch Id="ROLESDIRRegistry" Type="directory" Root="HKLM"

我正在使用RegistrySearch设置一个属于我的目录的属性,我看到当注册表值为不存在的sub directory时,目录的值没有设置,这是为什么?
在我的例子中,如果目标目录不存在(而注册表仍然指向它),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>

你的问题不是很清楚

你能举一个注册表值的例子吗

我过去用过这个

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


希望这有帮助

您能否编辑您的问题以使其清晰?您似乎在说,在某些情况下,
ROLESDIR
未按预期设置,但我不清楚这些情况是什么。您的回答是正确的,出现问题的原因是我使用了目录类型,尽管没有记录该目录必须存在