WiX 工具集,通过自定义操作设置安装目录路径,有效,但值变回默认值
WiX Toolset, setting install dir path via custom action, works, but value changes back to default
我正在尝试创建一个 msi 安装程序,它将应用程序安装到控制台会话的本地应用程序数据目录,即使运行 msi 的会话是系统会话(通过 GPO 部署时)也是如此。
为此,我正在创建一个提取 'right' 本地应用程序数据目录的自定义操作(此代码有效,没有问题)。
自定义操作将设置名为 'INSTALLDIR'.
的 属性 的值
这是来自wxs的相关代码:
<Property Id="INSTALLDIR" Value="C:\Users\default\AppData\Local\" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR">
<Directory Id="APPLICATIONFOLDER" Name="MyApp">
...
<Binary Id="MyCA" SourceFile="My.CustomActions.CA.dll"/>
<CustomAction Id="MyCASetLocalAppData" Impersonate="no" BinaryKey="MyCA" DllEntry="SetLocalAppData" Return="check" />
...
<InstallExecuteSequence>
<Custom Action="MyCASetLocalAppData" Before="CostFinalize">Not Installed OR UPGRADINGPRODUCTCODE</Custom>
在安装日志中,我可以看到 INSTALLDIR 的值从初始值更改为自定义操作的正确值,但后来在日志中,INSTALLDIR 的值又是默认值。
看来我需要多次调用 MyCASetLocalAppData...
我该如何解决这个问题?
谢谢!
我知道文档说要在 CostFinalize
之前安排,但这可能为时已晚。尝试将其更改为 After="CostInitialize"
(这是 WiX 的 SetDirectory
元素安排它的时间)。
我正在尝试创建一个 msi 安装程序,它将应用程序安装到控制台会话的本地应用程序数据目录,即使运行 msi 的会话是系统会话(通过 GPO 部署时)也是如此。
为此,我正在创建一个提取 'right' 本地应用程序数据目录的自定义操作(此代码有效,没有问题)。
自定义操作将设置名为 'INSTALLDIR'.
的 属性 的值
这是来自wxs的相关代码:
<Property Id="INSTALLDIR" Value="C:\Users\default\AppData\Local\" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR">
<Directory Id="APPLICATIONFOLDER" Name="MyApp">
...
<Binary Id="MyCA" SourceFile="My.CustomActions.CA.dll"/>
<CustomAction Id="MyCASetLocalAppData" Impersonate="no" BinaryKey="MyCA" DllEntry="SetLocalAppData" Return="check" />
...
<InstallExecuteSequence>
<Custom Action="MyCASetLocalAppData" Before="CostFinalize">Not Installed OR UPGRADINGPRODUCTCODE</Custom>
在安装日志中,我可以看到 INSTALLDIR 的值从初始值更改为自定义操作的正确值,但后来在日志中,INSTALLDIR 的值又是默认值。
看来我需要多次调用 MyCASetLocalAppData...
我该如何解决这个问题?
谢谢!
我知道文档说要在 CostFinalize
之前安排,但这可能为时已晚。尝试将其更改为 After="CostInitialize"
(这是 WiX 的 SetDirectory
元素安排它的时间)。