将环境变量获取到 WiX 属性中
有没有办法将环境变量放入 WiX 属性中?
我试图通过以下方式获取 USERPROFILE:
Property Id="UserFolder" Value="$(env.USERPROFILE)\EdwardsApp\MyFolder"
但这只会获取构建安装程序的构建计算机的 USERPROFILE。
我希望它使用安装应用程序的计算机的USERPROFILE
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
另一种方法是使用 SetProperty 元素 - 它将有效创建类型 51 自定义操作。它比使用自定义操作更简单,因为您不需要单独指定它的计划 - 一切都在一个元素中完成。在下面的示例中,仅当属性为空时(即不是从命令行传递的),我才设置该属性。
例子:
Alternative is to use SetProperty element - it will effectively create type 51 custom Action. It is simpler than using Custom Action as you don't need to separately specify the schedule for it - everything is done in one element. In my example below, I set the property only if its empty, i.e. was not passed from the command line.
Example:
您可以在安装过程中使用环境变量,但这需要使用自定义操作。您需要使用 UserFolder 属性rel="noreferrer">
键入 51 自定义操作
,而不是在构建期间设置属性。 [%ENVVARNAME] 格式用于使用环境变量,但环境变量的名称区分大小写。设置属性的自定义操作的 WiX 示例:
您可以在此处阅读有关 WiX 中自定义操作的更多信息:
http://blogs.technet.com/b/alexshev/archive/2008/02/21/from-msi- to-wix-part-5-custom-actions.aspx
You can make use of Environment variables during installation but this requires using a custom action. You will need to set the
UserFolder
property with aType 51 Custom Action
as opposed to setting the property during the build. The [%ENVVARNAME] format is used to make use of an environment variable, but the name of the environment variable is case-sensitive.A WiX example of a custom action that sets a property:
You can read more on Custom Actions in WiX here:
http://blogs.technet.com/b/alexshev/archive/2008/02/21/from-msi-to-wix-part-5-custom-actions.aspx
由于我还无法添加评论,因此对于 @demp 的回答,我必须这样做才能在初始化期间的某个时间评估条件,以便该值可以显示在 UI 对话框中:
我相信
Before="InstallInitialize"
发生在安装本身继续进行之前(即复制文件等),而不会发生在安装程序本身的初始化阶段。Since I can't add a comment yet, with regard to @demp's answer, I had to do this to get the condition to evaluate sometime during initialization so that the value could be displayed in a UI dialog:
I believe that
Before="InstallInitialize"
happens just before the installation itself proceeds (i.e. copying files and whatnot) and not during the initialization phase of the installer itself.就我而言,我希望获取目标计算机的 USERPROFILE 环境变量来安装那里的所有文件。我实现了这样的目标:
然后所有文件都到达我想要的位置。
In my case, I'm looking to get the USERPROFILE environment variable of the target machine to install all the files there. I achieved that like:
Then all the files went where i wanted them to go.