【问题标题】:WIX c# CustomAction, what am I doing wrong?WIX c#CustomAction,我做错了什么?
【发布时间】:2010-06-29 21:23:02
【问题描述】:

我正在使用 VS2010 和 WIX 3.5。

1) 我创建了 WIX 设置项目。

2) 然后我添加到解决方案 C# 自定义操作项目中并将其命名为“CustomActions”

 namespace CustomActions
 {
   public static class CustomActions
   {
     [CustomAction]
     public static ActionResult CustomAction1(Session session)
     {
         Debugger.Break();
         MessageBox.Show("It works");
         session.Log("Begin CustomAction1");
         return ActionResult.Success;
     }
   }
 }

3) 然后我编译了 CustomActions 项目并从我的安装项目中添加了对它的引用。

4) 最后放入 .wxs 文件:

 <Binary Id="CustomActions"  SourceFile="$(var.CustomActions.TargetDir)$(var.CustomActions.TargetName).CA.dll"/>

 <CustomAction Id="CustomAction1" BinaryKey="CustomActions" DllEntry="CustomAction1" Execute="immediate" />

这行不通。我究竟做错了什么?请帮帮我。

【问题讨论】:

    标签: c# wix custom-action wix3.5 dtf


    【解决方案1】:

    您还需要安排自定义操作运行

       <InstallUISequence>
          <Custom Action="CustomAction1" After="AppSearch"/>
       </InstallUISequence>
    

    您还必须注意,在 MSI 沙盒中运行会限制很多事情。我不相信您对 MessageBox.Show 的调用会起作用。您将不得不依赖会话日志记录。

    【讨论】:

    • 如果 MessageBox.Show() 引用命名空间 System.Windows.Forms 并且还添加了指令“Using System.Windows.Forms”,则调用 MessageBox.Show() 将起作用
    • 我给它做了一个测试,它似乎确实有效。我不相信这是一个好主意,但是任何可以完成工作的方式。 :)
    • 你应该使用 session.Message 来显示一条消息,否则你不能保证消息框会在没有更多编码的情况下位于顶部
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多