谁能给我一个在 WIX 中修改 windows 环境系统变量的例子吗?

Posted

技术标签:

【中文标题】谁能给我一个在 WIX 中修改 windows 环境系统变量的例子吗?【英文标题】:Can anyone give me a example of modifying windows environment system variables in WIX? 【发布时间】:2010-12-28 05:51:36 【问题描述】:

看完WIX教程后,我仍然不知道如何将installdir添加到Windows系统变量的PATH中。

我尝试使用

  Environment Id='UpdatePath' Action='create' Name='PATH'  System='yes' Value='[INSTALLDIR]' 

但我安装程序后路径没有变化。我几乎无法在任何地方找到 WIX 的示例代码。 请帮助我,非常感谢!

【问题讨论】:

【参考方案1】:

你应该可以使用:

<Environment Id="PATH" Name="PATH" Value="[INSTALLDIR]" Permanent="yes" Part="last" Action="set" System="yes" />

这应该在环境路径中添加一个新条目,设置为[INSTALLDIR].

【讨论】:

设置 Permanent="no" 将在卸载时删除附加的部分(但不是整个值)。 注意 INSTALLDIR 不是一个神奇的词——它需要匹配一个目录的 id,可以是你喜欢的任何东西(甚至不需要大写字母,尽管它们在 wix 中有特殊含义!) 这对我不起作用。当我回显我的 %PATH% 变量时,它没有改变。任何人都可以发布更多的上下文吗?根据@Deqing 在下面的回答,我在 DirectoryRef 中找到了它,但我仍然没有运气。 Wix Official Documentation Basic 和 Wix Official Documentation Detailed 用于Environment 标签。 @KevinSmyth:如果我们设置Permanent="no",如果在用户点击卸载时将来自其他安装的更多值附加到路径环境变量会发生什么?是否仍然从路径环境变量中删除了正确的值?【参考方案2】:

另外需要注意的是,Environment 需要放在一个有目录的组件中,例如

<DirectoryRef Id="TARGETDIR">
  <Component Id="Path" Guid="xxx-xxx-xxx-xxx">
    <Environment Id="PATH" Name="PATH" Value="[INSTALLDIR]" Permanent="no" Part="last" Action="set" System="no" />
  </Component>
</DirectoryRef>

Environment Element 中描述的 Wix 元素的详细信息

【讨论】:

其实只需要在一个fragment然后是component,不需要directoryref 我正在尝试使用此答案设置环境变量但没有成功:我找不到DirectoryRef 的正确位置。我还尝试在没有DirectoryRef 父母的情况下放置Component。有人可以建议我应该将Environment 标签放在我的 wxs 文件中的哪个位置:gist.github.com/pyeremenko/891eceb779197e4be240 我最终将Component(没有DirectoryRef)放在了根级别Directory(即&lt;Directory Id="TARGETDIR" Name="SourceDir"&gt;)的正下方,它对我来说效果很好。【参考方案3】:

有同样的问题,这对我有用:

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="DataBaseds_Service_Installer" />
            </Directory>
        </Directory>

    <ComponentGroup Id="Components" Directory="INSTALLFOLDER">

      ...some components  
    </ComponentGroup>

    <DirectoryRef Id="TARGETDIR">
      <Component Id="mysql_PASSWORD" Guid="..."
        <Environment Id=HERE YOU CAN ADD THIS  :)/>
      </Component>      
    </DirectoryRef>

【讨论】:

我知道已经晚了,但也许有人会用它。

以上是关于谁能给我一个在 WIX 中修改 windows 环境系统变量的例子吗?的主要内容,如果未能解决你的问题,请参考以下文章

谁能给我一个windows server 2003 企业版镜像下载地址!

有谁能给我讲讲linux到底是啥,它怎么使用?

什么是减少变量?谁能给我一些例子?

谁能给我一个xsl中模板“模式”的例子吗?

有谁能给我今年的NOIP分区联赛的题目?

java 装饰着模式,谁能给我说明一下,谢谢了