首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WiX安装程序-随着重新安装/修复而删除的环境变量

WiX安装程序-随着重新安装/修复而删除的环境变量
EN

Stack Overflow用户
提问于 2022-09-28 17:10:39
回答 1查看 48关注 0票数 1

我正在使用WiX 3.11.1为Petrel插件创建一个WiX安装程序。Product.wxs本质上是经过几处修改后的一个:

https://github.com/davidbcc/DeCompactPlugIn/blob/dev/FaciesDecompactorInstaller/Product.wxs

我在向导中添加了一个页面,用户可以在编辑框中指定许可证服务器。根据这些信息,我创建和/或更新了一个环境变量:

代码语言:javascript
运行
复制
<!-- Get the current environment variable if it exists -->
<SetProperty Id="LICENSE_SERVER_ENV_VAR" Value="[%LIC_HOST]" After="LaunchConditions" Sequence="first"></SetProperty>


<snip>


<!-- Validate that the license server name is not empty before proceeding. -->
<Control Type="PushButton" Id="Next" X="239" Y="243" Width="56" Height="17" Default="yes" Text="Next">
   <Publish Event="SpawnDialog" Value="ServerNameErrorDlg"><![CDATA[LICENSE_SERVER_ENV_VAR = ""]]></Publish>
   <Publish Event="NewDialog" Value="ngenDialog"><![CDATA[LICENSE_SERVER_ENV_VAR <> ""]]></Publish>
</Control>


<snip>


<!-- Install the plugin and set the environment variable -->
<Fragment>
    <ComponentGroup Id="PluginComponents" Directory="INSTALLLOCATION">
      <Component Id="PetrelPluginPip" Guid="120AF5B9-E751-43F4-AF4C-7DED33C8BEB4">
         <Environment Id="LicenseServerEnVar" Action="set" Name="LIC_HOST" System="yes" Permanent="yes" Value="[LICENSE_SERVER_ENV_VAR]"/>
         <File Id="PetrelPluginPippip" Source="../OceanPluginPip/bin/$(var.OceanPluginPip.Platform)/$(var.OceanPluginPip.Configuration)/PetrelPluginPip.pip" KeyPath="yes" />
      </Component>
    </ComponentGroup>
  </Fragment>

在初始安装和通过添加/删除程序操作时,一切似乎都运行良好。如果我在那里运行修复程序,它就会安静地运行,并且环境变量将保持不变。

但是,安装后,如果我右键单击安装程序(实际的.msi文件),选择“安装”,然后在维护对话框中选择“修复”选项,我将再次遍历向导。页面正确地提取许可服务器信息,就像初次安装时一样,但是在完成修复之后,环境变量将从系统中删除。

我试过:

将“Sequence”在Component

  • creating上设置为“

  • ”,将“Environment”标记放入到自己的
  • 中,用于设置在InstallExecuteSequence

中使用的许可证服务器

这些都不起作用。

有人知道为什么通过MaintenanceDialog进行修复会导致环境变量的删除吗?谢谢。

编辑:添加详细的日志记录后,修复输出显示以下似乎相关的内容:

代码语言:javascript
运行
复制
MSI (s) (60:78) [11:42:25:420]: PROPERTY CHANGE: Adding RestrictedUserControl property. Its value is '1'.
MSI (s) (60:78) [11:42:25:420]: PROPERTY CHANGE: Adding PETRELINSTALLLOCATION property. Its value is 'C:\Program Files\Schlumberger\Petrel 2022\'.
MSI (s) (60:78) [11:42:25:420]: Ignoring disallowed property INSTALLLOCATION
MSI (s) (60:78) [11:42:25:420]: Ignoring disallowed property LICENSE_SERVER_ENV_VAR
MSI (s) (60:78) [11:42:25:420]: Ignoring disallowed property TARGETDIR

Action start 11:42:25: LaunchConditions.
Action ended 11:42:25: LaunchConditions. Return value 1.
MSI (s) (60:78) [11:42:25:468]: Doing action: SetLICENSE_SERVER_ENV_VAR
MSI (s) (60:78) [11:42:25:468]: Note: 1: 2205 2:  3: ActionText 
Action start 11:42:25: SetLICENSE_SERVER_ENV_VAR.
MSI (s) (60:78) [11:42:25:469]: Skipping action due to msidbCustomActionTypeFirstSequence option.
Action ended 11:42:25: SetLICENSE_SERVER_ENV_VAR. Return value 0.

为什么在修理时不允许使用该房产?我在最初安装的时候没看到这个。但是我仍然不知道环境变量在哪里被删除。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-28 18:09:23

在研究了“忽略不允许的属性”意味着什么之后,我看到了下面的帖子,表明该属性很可能没有传播到执行序列:

https://stackoverflow.com/a/39227065/4460247

通过在填充属性之前添加属性定义并将其标记为“安全”,属性将被设置,并且不再删除环境变量。

代码语言:javascript
运行
复制
<Property Id="LICENSE_SERVER_ENV_VAR" Secure="yes"></Property>
<SetProperty Id="LICENSE_SERVER_ENV_VAR" Value="[%LIC_HOST]" After="LaunchConditions" Sequence="first"></SetProperty>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73885415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档