【问题标题】:How do I set an MSI installation folder dynamically如何动态设置 MSI 安装文件夹
【发布时间】:2010-09-15 14:37:00
【问题描述】:

我正在使用 WiX 创建一个 Web 应用程序安装程序。我想让用户从 IIS 服务器上的站点列表中选择网站,然后将应用程序安装在该网站根文件夹的子目录中。

我已经完成了“选择网站”部分。我有一个自定义操作,可以根据所选站点设置一堆属性。这些属性之一 (WEB_SITE_ROOT_PHYSICAL_PATH) 是网站根文件夹的路径。

但是,我无法将应用程序安装到该路径。

我的目录结构如下:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="IIS_WEB_ROOT">
    <Directory Id="WEB_SITE_ROOT" Name=".">
      <Directory Id="INSTALLLOCATION" Name="$(var.ProductName)">

IIS_WEB_ROOT 定义为:

<Property Id="IIS_WEB_ROOT">
  <RegistrySearch Id="Search" Root="HKLM" Key="Software\Microsoft\InetStp" Name="PathWWWRoot" Type="raw" />
</Property>

WEB_SITE_ROOT_PHYSICAL_PATH设置为WEB_SITE_ROOT,如下:

<Property Id="WEB_SITE_ROOT_PHYSICAL_PATH" Value="WEB_SITE_ROOT"/>

网站选择对话框显示在安装文件夹对话框之前。安装文件夹对话框使用以下“标准属性”:

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/>

所有这一切的结果是应用程序安装到 IIS Web 根文件夹中 - 而不是网站根文件夹。

我只是不确定如何将我的安装文件夹设置为动态定义的 WEB_SITE_ROOT_PHYSICAL_PATH 属性。我需要一些正确方向的指示。设置 WEB_SITE_ROOT_PHYSICAL_PATH 属性后,是否需要其他自定义操作来设置安装文件夹?如果是这样,我如何在网站选择对话框完成后将其设置为 first?或者,我得到了所有部件,但我没有正确连接它们。

【问题讨论】:

    标签: wix windows-installer properties installation-path


    【解决方案1】:

    为了将属性设置为另一个属性的值,您应该编写自定义操作:

    <CustomAction Property="WEB_SITE_ROOT_PHYSICAL_PATH" Value="[WEB_SITE_ROOT]" />
    

    当然,您应该在定义原始 WEB_SITE_ROOT 属性之后安排此操作。

    希望这会有所帮助。

    【讨论】:

    • 不会设置 WEB_SITE_ROOT_PHYSICAL_PATH = WEB_SITE_ROOT 吗?我需要反过来。而且,如果我切换它们,WiX 会告诉我需要在 CostFinalize 之前运行该操作,因为 WEB_SITE_ROOT 是一个目录。但是,我需要等到用户在自定义对话框中选择网站之后。
    • 啊,那你可能应该像这样重写它(注意“目录”而不是“属性”):
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多