2014-09-26 19 views
0

使用我有一個庫下面一個RegistrySearch並安裝基於一個DirectoryRef像這樣的東西:維克斯設置圖書館財產PathEdit

<Property Id="NETCATSUPPLIER_COPIEDFOLDER" Value="$(var.NetCatSupplierFolder)"> 
    <RegistrySearch Id='NETCATSUPPLIER_PathRegistry' Type='raw' 
        Root='HKLM' Key='SOFTWARE\Wow6432Node\CCITriad\Webcat\US' Name='SupplierDir' Win64='no'/> 
</Property> 
<CustomAction Id='caSetNetCatFolder' Property='NETCATSUPPLIER_INSTALLDIR' Value='NETCATSUPPLIER_FOLDER'/> 
<DirectoryRef Id="NETCATSUPPLIER_FOLDER"> 
    <Directory Id="dirB8A776200F52C79DA6CD73A2D989485B" Name="TS" /> 
</DirectoryRef> 

我設置NETCATSUPPLIER_FOLDER在我Product像這樣的:

<PropertyRef Id="NETCATSUPPLIER_COPIEDFOLDER"/> 
<SetDirectory Id="NETCATSUPPLIER_FOLDER" Value="[NETCATSUPPLIER_COPIEDFOLDER]" /> 
<Property Id="NETCATSUPPLIER_INSTALLDIR" Value="NETCATSUPPLIER_FOLDER"/> 

NETCATSUPPLIER_INSTALLDIR我在UI使用一個PathEdit

我越來越多:

Error 1314. The specified path 'NETCATSUPPLIER_FOLDER' is unavailable.

我想這個至今:

  • 我試圖從那裏我所有的發佈都做了,我得到了UI一個打電話給我的自定義操作在不同的地方也出現同樣的錯誤
  • 我也在我的對話框中嘗試了一個自定義動作
  • 我也嘗試了其他一些東西,但是我得到了另一個r類型的問題

我想在不增加Product的大小的情況下做到這一點,因爲我想在其他地方重用我的庫。

任何人都知道如何正確設置庫屬性?

回答

0

我找到了答案。

在產品文件首先,我放在一個SetDirectory這樣的:

<Directory Id="TARGETDIR" 
      Name="SourceDir"> 
    <Directory Id="INSTALLDIR" 
      Name="Epicor"/> 
    <Directory Id="NETCATDATA_FOLDER"/> 
</Directory> 

然後,PropertyRef獲得外部wixlib庫中定義的默認目錄名。

<PropertyRef Id="NETCATDATA_COPIEDFOLDER"/> 

然後SetDirectory

<SetDirectory Id="NETCATDATA_FOLDER" Value="[NETCATDATA_COPIEDFOLDER]" Sequence="both" /> 
<SetProperty Id="NETCATDATA_INSTALLDIR" Value="NETCATDATA_FOLDER" Before="CostInitialize"/> 

然後ComponentGroupRef把所有的文件安裝到範圍

<Feature Id="ProductFeature" Title="Main Product" Level="1"> 
    <!--Linked Features--> 
    <ComponentGroupRef Id="NetCatDataFilesGroup"/> 
</Feature> 

然後在我的添加參照對話框上的產品UI庫(是的,有一個對話框來選擇你想要安裝你的支持文件的地方)。

<Publish Dialog="NetCatInstallationDlg" Control="Back" Event="NewDialog" Value="InstallDirectoryDlg">1</Publish> 
    <!--Here is the setter to your Installation property--> 
    <Publish Dialog="NetCatInstallationDlg" Control="Next" Event="SetTargetPath" Value="[NETCATDATA_INSTALLDIR]" Order="1">1</Publish> 
    <Publish Dialog="NetCatInstallationDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish> 
    <Publish Dialog="NetCatInstallationDlg" Control="Next" Event="SpawnDialog" Value="EpicorInvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> 
    <Publish Dialog="NetCatInstallationDlg" Control="Next" Event="NewDialog" Value="EpicorVerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish> 
    <!--Here is the reference to your Installation property--> 
    <Publish Dialog="NetCatInstallationDlg" Control="NetCatDataChangeFolder" Property="_BrowseProperty" Value="[NETCATDATA_INSTALLDIR]" Order="1">1</Publish> 
    <Publish Dialog="NetCatInstallationDlg" Control="NetCatDataChangeFolder" Event="SpawnDialog" Value="EpicorBrowseDlg" Order="2">1</Publish> 

,並在對話框NetCatInstallationDlg,您是從產品參考的一個,你需要創建PathEdit如下:

<Control Id="NetCatDataFolderLabel" Type="Text" X="371" Y="173" Width="150" Height="12" NoPrefix="yes" Transparent="yes" Text="Data Files"/> 
    <!--You MUST use indirect="yes"--> 
    <Control Id="NetCatDataFolder" Type="PathEdit" X="371" Y="188" Width="150" Height="20" Property="NETCATDATA_INSTALLDIR" Indirect="yes" Text="{\TextInput_Font}"/> 
    <Control Id="NetCatDataChangeFolder" Type="PushButton" X="525" Y="187" Width="22" Height="22" Bitmap="yes" TabSkip="no" FixedSize="yes" Sunken="yes" ToolTip="Browse to change directory"> 
     <Text>[DirOpen22pOrgWht]</Text> 
     <Publish Property="_BrowseProperty" Value="NETCATDATA_INSTALLDIR" Order="1">1</Publish> 
    </Control> 

,這將允許你安裝文件罪的目錄除了WIXUI_INSTALLDIR之外的其他地方放入客戶選擇的地方。很酷。