2010-02-25 59 views
1

我正在使用RegistrySearch來設置屬於我的目錄之一的屬性,我發現當註冊表值是不存在的子目錄的值時,目錄沒有設置,爲什麼?
在我的情況下ROLESDIR將被設置爲空,如果目標目錄不存在(當註冊表仍然指向它) - >最終的結果是,該RoleDir將直接CONFDIR使用RegistrySearch爲不存在的目錄設置目錄不起作用

<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

你能編輯你的問題的清晰?你似乎在說,在某些情況下,「ROLESDIR」沒有按預期設定,但我不清楚這些情況是什麼。 – 2010-02-26 01:21:55

回答

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> 

希望幫助

+0

你的回答是正確的,問題發生是因爲我使用了目錄類型 - 雖然沒有記錄目錄必須存在 – 2010-03-17 08:49:45