gpt4 book ai didi

c# - WiX 自定义操作未执行

转载 作者:行者123 更新时间:2023-11-30 17:08:56 28 4
gpt4 key购买 nike

我无法执行 Wix 自定义操作时遇到问题。即使自定义操作返回 ActionResult.Success,安装程序也会不断地自行回滚。

自定义操作 (C#)

[CustomAction]
public static ActionResult SetPermissionsToAppDataFolder(Session session)
{
return ActionResult.Success;
}

Wix 中的自定义操作定义

<!-- Custom Action -->
<Binary Id="CustomActionLibrary" SourceFile="$(var.CustomActionFolder)InstallerCustomActions.CA.dll" />
<CustomAction Id="CustomActionInstallDirectoryPermission"
BinaryKey="CustomActionLibrary"
DllEntry="SetPermissionsToAppDataFolder"
Execute="deferred"
Return="check" />

调用自定义操作的安装序列

<!-- Install Sequences -->
<InstallExecuteSequence>
<Custom Action="CustomActionInstallDirectoryPermission" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

安装程序编译正常,因此可以毫无问题地找到自定义操作库文件。问题是安装程序在回滚之前进入安装的最后阶段。当我们在安装序列中删除对自定义操作的调用时,安装程​​序完成。

根据我的理解,自定义操作 CA.dll 嵌入到最终安装程序中。最初我认为 CA.dll 需要与安装程序一起分发,但后来发现安装程序将其编译成最终的 .msi。

我已经使用在以下位置找到的代码“连接”了自定义操作库: http://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed

无论我做什么我都无法让安装程序完成,即使自定义操作返回“成功”也是如此。感谢您的帮助。

最佳答案

对于那些在 WiX 上苦苦挣扎并在这里跌跌撞撞的人。

一些建议:

1) 您是否尝试过将 Debugger.Launch() 添加到 CustomAction 代码的第一行(即在 Return ActionResult.Success; 之上)?如果您没有看到要求启动调试器的对话框,那么您就知道您的 WiX 脚本没有正确引用您的 CA.dll,或者它的调用存在问题。

2) 如果您正在使用 Fragments 并且 CustomAction 元素位于其中,请尝试将它们取出并放在 Product 元素下。

3) 如果您打算使用延迟执行,您是否尝试过 CustomAction 中的 Impersonate="no" 属性

关于c# - WiX 自定义操作未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387486/

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