【问题标题】:Get an environment variable into a WIX property将环境变量获取到 WIX 属性中
【发布时间】:2010-08-11 15:23:59
【问题描述】:

有没有办法将 WIX 中的环境变量放入属性中?

我正在尝试通过以下方式获取USERPROFILE

Property Id="UserFolder"  Value="$(env.USERPROFILE)\EdwardsApp\MyFolder"

但这只会获取构建机器的USERPROFILE,安装程序就是在其中构建的。

我希望它使用正在安装应用程序的机器的USERPROFILE

【问题讨论】:

  • 使用 $(env.USERPROFILE) 会在您构建 Wix 安装程序时为您的构建机器带来 UserProfile 的价值。一些好的解决方案已经回复了。
  • 除了Farrukh的评论:$(env...)语法来自WiX Preprocessor

标签: wix environment


【解决方案1】:

替代方案是使用SetProperty element - 它将有效地创建类型 51 自定义操作。它比使用自定义操作更简单,因为您不需要单独指定它的时间表 - 一切都在一个元素中完成。在下面的示例中,我仅在属性为空时设置属性,即未从命令行传递。

例子:

<SetProperty Id="PROP_MYSOME"
             Before="InstallInitialize" 
             Sequence="execute"
             Value="[%USERDOMAIN]">
    <![CDATA[NOT Installed AND PROP_MYSOME=""]]>
</SetProperty>

【讨论】:

    【解决方案2】:

    由于我还不能添加评论,关于 @demp 的回答,我必须这样做才能在初始化期间的某个时间评估条件,以便可以在 UI 对话框中显示值:

        <SetProperty Id="MY_PROPERTY" Value="[%USERDOMAIN]" After="LaunchConditions" Sequence="first"  />
    

    相信Before="InstallInitialize" 发生在安装本身进行之前(即复制文件等),不是在安装程序本身的初始化阶段。 p>

    【讨论】:

      【解决方案3】:

      在我的例子中,我正在寻找目标机器的 USERPROFILE 环境变量,以便在那里安装所有文件。我做到了:

      <Property Id="HOME_FOLDER" >
        <DirectorySearch Id="userProfileSearch" Depth="0" Path="[%USERPROFILE]" />
      </Property>
      

      然后所有文件都去了我希望它们去的地方。

      【讨论】:

        【解决方案4】:

        您可以在安装过程中使用环境变量,但这需要使用自定义操作。您需要使用Type 51 Custom Action 设置UserFolder 属性,而不是在构建期间设置属性。 [%ENVVARNAME] 格式用于使用环境变量,但环境变量的名称区分大小写。

        设置属性的自定义操作的 WiX 示例:

        <CustomAction Id="SetUserFolder" Property="UserFolder" Value="[%USERPROFILE]EdwardsApp\MyFolder" />
        

        您可以在此处阅读有关 WiX 中的自定义操作的更多信息:

        http://blogs.technet.com/b/alexshev/archive/2008/02/21/from-msi-to-wix-part-5-custom-actions.aspx

        【讨论】:

        • USERPROFILE 没有尾部反斜杠,所以不应该是:Value="[%USERPROFILE]\EdwardsApp\MyFolder"
        • 我正在尝试使用 ProgramFiles(x86) 环境变量,但我似乎无法弄清楚如何转义括号。我总是得到 ICE03: Invalid format string。有人知道如何使用这个环境变量吗?
        猜你喜欢
        • 2015-03-16
        • 2020-01-31
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        相关资源
        最近更新 更多