2011-07-06 90 views
4

我試圖構建一個WIX安裝程序,它允許用戶通過命令行參數指定安裝路徑。Wix目錄如何工作?

<Property Id="IISROOTPATH"> 
    <RegistrySearch Id="FindInetPubFolder" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Name="PathWWWRoot" Type="directory" /> 
</Property>  
... 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="IISROOTPATH"> 
     <Directory Id="INSTALLPATH" Name="WebsiteFolder"> 
... 

如果用戶不傳遞任何參數,它會查找註冊表中的iisroot文件夾,一個名爲「WebsiteFolder」

但是爲了用戶文件夾下的安裝文件更改安裝路徑,他們必須在絕對路徑,如

INSTALLPATH="C:\InetPub\wwwroot\CustomWebsiteFolder" 
  1. 這是如何工作的通過?它會忽略其他目錄元素TARGETDIR和IISROOTPATH嗎?

  2. 如何將INSTALLPATH更改爲僅WEBSITEFOLDERNAME,以便用戶只需傳遞文件夾名稱而不是絕對安裝路徑。因此迫使用戶總是安裝到inetpub中?

回答

4

您應該瞭解Directory表 - Directory元素背後的MSI概念。我見過的最好的解釋是a set of Rob's articles(鏈接是第一部分,如果我沒有記錯的話,有6個部分)。

0

要回答你的第二個問題:

  1. 創建自定義對話框(刪除普通文件夾選擇對話框),在那裏用戶可以鍵入保存到一個屬性(即[FOLDER_NAME])所需的文件夾。
  2. 有一個目錄元素只是文件夾名稱的佔位符。
  3. 將自定義操作附加到1.中創建的對話框上的「下一步」按鈕,該對話框設置[FOLDER_NAME]中的目錄。
 
    <Directory Id="IISROOTPATH"> 
     <Directory Id="INSTALLPATH" Name="WebsiteFolder">   
     </Directory> 
    </Directory> 
<CustomAction Id="SetFolderPath" Directory="INSTALLPATH" Value="[IISROOTPATH][FOLDER_NAME]" /> 

顯然它會添加條件到下一個按鈕,使用戶不使用默認或保留的文件夾名稱的空白是一個好主意。

這一操作將讓你保持的根目錄爲C:\ Intetpub \ wwwroot文件,並讓他們指定一個自定義文件夾。

+0

由於某些原因代碼沒有出現,請編輯答案以查看它! –

+0

修復了代碼。 –