2012-09-18 130 views
3

我使用Wix 3.6來創建設置。我一直在學習。那裏的信息依然散佈在四周。我只是在等待我的Wix Developer Guide的書到達。Wix安裝程序 - 基於屬性創建文件夾層次

我目前有一個自定義用戶界面對話框,用戶輸入一些應用程序配置。該配置的一部分是指定一個日誌文件夾。目前這只是設置一個屬性[LogFolder]。這默認爲D:\ Logs。

我希望安裝程序在安裝程序運行時創建該目錄。我有以下嘗試執行此操作,但是當我運行安裝程序時,它只在D:驅動器上創建了一個名爲[LOGFOLDER]的文件夾。

<Product ... 
    <Directory Id="TARGETDIR" Name="SourceDir" > 
     <Directory Id="LogFolderDir" Name="[LOGFOLDER]" > 
      <Component Id="LogFolderComponent" Guid="{7E7D6916-B321-40D6-ABAD-696B57A6E5FB}" KeyPath="yes"> 
       <CreateFolder /> 
      </Component> 
     </Directory> 
    </Directory> 
    ... 
</Product> 

我該如何與Wix做到這一點?

回答

1

Name屬性不可格式化,因此您可以在其中使用屬性。 Id'LogFolderDir'沒有像「ProgramFilesFolder'這樣的父級,所以它默認的磁盤空間量最大,在這種情況下,D但YMMV。

默認爲D很危險:因爲D :可能不存在如何設置這個目錄是Id =「LOGDIR」Name =「Logs」,並將它設置爲INSTALLDIR/INSTALLLOCATION目錄元素的子元素,然後在自定義用戶界面中,連接另一個BrowseFolder對話框用戶可以覆蓋它,或者使其與所需的日誌功能關聯,以便股票功能選擇對話框可用於選擇功能並瀏覽目標文件夾。

如果您仍然希望它「默認「到D:\記錄我要做的是有一個自定義操作,檢查D:是否存在並且是否爲af ixed磁盤。如果是這樣,將LOGDIR = d:\ Logs中

+0

僅以D:\爲例。對不起這是我的錯。謝謝你,會嘗試一下。 – Andez

4

的第一步是創建一個屬性設置爲你想要的值:

<Product> 
    <Property Id="LOGFOLDER" Value="D:\Logs" /> 
</Product> 

第二步是要創造一個將此屬性設置對話框(或其他東西來改變它的值):

<Dialog> 
    <Control Id="Edit_LogFolder" Type="Edit" Property="LOGFOLDER" /> 
</Dialog> 

然後,你需要改變你的目錄結構在默認位置創建該文件夾:

<Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLFOLDER" Name="MyApp"> 

    <Directory Id="LOGFOLDER" Name="Logs" /> 

    </Directory> 
</Directory> 

最後一步是創建將創建目錄組件,如:

<ComponentGroup Id="ComponentGroup_LogFolder"> 
    <Component Id="Component_LogFolder" Guid="" Directory="LOGFOLDER"> 

    <CreateFolder Directory="LOGFOLDER" /> 

    </Component> 
</ComponentGroup> 

備註:

如果d:\爲光盤驅動器,你必須插入光盤時,安裝將失敗,因爲它會嘗試創建該文件夾,並且它不會成功。

相關問題