2011-07-06 39 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

修复了代码。 –