gpt4 book ai didi

windows-7 - WiX msi 自定义操作未在 Windows 7 上以有限权限运行

转载 作者:行者123 更新时间:2023-12-04 05:02:58 26 4
gpt4 key购买 nike

一直在尝试为我的最新项目创建 WiX 安装程序。我有一个奇怪的问题,如果我以管理员身份通过 cmd 提示符运行 msi,它可以正常工作,自定义操作不会大惊小怪,一切正常,但是如果我双击 msi,自定义操作将不起作用,安装程序失败。我使用的是 Visual Studio 2012 和 Windows 7。

<!--Custom Actions-->
<Binary Id='customShortcut' SourceFile='$(var.CustomDir)\TestInstallerCustom.CA.dll'/>
<Binary Id='customDir' SourceFile='$(var.CustomDir)\TestInstallerCustom.CA.dll'/>
<Binary Id='removeDir' SourceFile='$(var.CustomDir)\TestInstallerCustom.CA.dll'/>

<CustomAction Id='customShortcutId' BinaryKey='customShortcut' DllEntry='CustomShortcut'
Execute='immediate' Impersonate='no' Return='check' />
<CustomAction Id='customDirId' BinaryKey='customDir' DllEntry='CustomDir'
Execute='immediate' Impersonate='no' Return='check'/>
<CustomAction Id='removeDirId' BinaryKey='removeDir' DllEntry='RemoveDir'
Execute='immediate' Impersonate='no' Return='check'/>

<InstallExecuteSequence>
<Custom Action='customDirId' Before='InstallFinalize'/>
<Custom Action='customShortcutId' After='InstallFinalize'/>
<Custom Action="removeDirId" After="InstallValidate">REMOVE="ALL"</Custom>
</InstallExecuteSequence>

最佳答案

'immediate'安装的提升部分不执行自定义操作。因此,它们仅在安装过程中被提升运行时被提升(如您所见)。要提升自定义操作,它们必须是事务脚本的一部分。要做到这一点,请设置 CustomAction元素 Execute='deferred'属性。

注意:延迟的自定义操作还有其他限制,在 MSI SDK 中有记录:'Deferred Execution Custom Actions' topic .由于看起来自定义操作正在修改机器状态,因此您还需要考虑添加回滚自定义操作以撤消延迟自定义操作所做的更改。

编写好自定义操作非常具有挑战性。这就是自定义操作是导致安装失败的最大原因的部分原因。如果您可以避免编写自定义操作,我强烈建议您这样做。 :)

关于windows-7 - WiX msi 自定义操作未在 Windows 7 上以有限权限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com