【问题标题】:Wix How do Directories work?Wix 目录如何工作?
【发布时间】:2011-09-29 23:32:32
【问题描述】:

我正在尝试构建一个 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?

【问题讨论】:

    标签: wix windows-installer wix3.5


    【解决方案1】:

    您应该了解Directory 表 - Directory 元素背后的 MSI 概念。我见过的最好的解释是a set of Rob's articles(链接是第 1 部分,如果我没记错的话,有 6 个部分)。

    【讨论】:

      【解决方案2】:

      回答你的第二个问题:

      1. 创建一个自定义对话框(删除普通文件夹选择器对话框),用户可以在其中键入保存到属性(即 [FOLDER_NAME])的所需文件夹。
      2. 有一个目录元素,它只是文件夹名称的占位符。
      3. 将自定义操作附加到在 1. 中创建的对话框上的“下一步”按钮,该按钮从 [FOLDER_NAME] 设置目录。
      目录> 目录>
      <CustomAction Id="SetFolderPath" Directory="INSTALLPATH" Value="[IISROOTPATH][FOLDER_NAME]" />
      

      显然,向“下一步”按钮添加条件是个好主意,这样用户就不会使用默认值或将文件夹名称留空。

      这将允许您将根目录保留为 C:\Intetpub\wwwroot 并允许他们指定自定义文件夹。

      【讨论】:

      • 由于某种原因代码没有出现,编辑答案看看吧!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多