wix c#app安装后无法启动

我已经使用Wix成功生成并成功安装了我的C#WPF应用程序。 该应用程序包括Crystal报告DLL和其他一些像Zen Barecode的dll。 在第n次尝试修改主项目之后,MSI能够自行安装,但是通过直接从快捷方式或可执行文件启动应用程序,它无法启动。

这是我的wix product.wxs

                     = 600]]>                                                        

更新 :问题是过时的配置文件中缺少应用程序参数。 换句话说, 配置问题 。 通过将调试器附加到启动应用程序找到。 见下文。


记录 :您是否在事件查看器或应用程序提供的任何其他日志记录构造中看到了任何线索? 也许您可以通过其配置文件或注册表设置为应用程序启用调试日志记录

启动问题Check-List :我曾经为应用程序启动问题编写了一个通用的检查列表 。 也许看看,看看有什么东西敲响了钟声。

调试二进制文件 – 启动序列调试 :您可以在应用程序启动序列的早期插入一个消息框,并将调试二进制文件整合到您的设置中,安装它,然后在启动时将调试器附加到应用程序的消息框以便逐步启动码? (设置一个断点)。

  • 也许为这个“附加调试器方法”检查这个不错的高级安装程序video教程 。 它显示了自定义操作代码的相同方法。 启动应用程序的过程相同。 只需附加到消息框并设置断点即可。

  • 注意 :显然,一旦你知道问题是什么, 记住重新编译发布二进制文件 – 并重新发布。 调试二进制文件不可再发行 – 它们绑定到仅由MS SDK安装的调试dll。 普通PC不会(通常)拥有这些调试dll(使这个过程主要是关于配置问题而不是关于运行时依赖性问题)。

更新免责声明:

免责声明 :虽然显而易见,但必须提及: 永远不要使用调试二进制文件进行实际发布1)根本不合法, 2)由于调试二进制文件的透明性和反向工程可能性而不是一个好主意, 3)非开发人员框中不存在调试运行时二进制文件(并且不要试图静态链接)。 最后:当您乱搞这样的调试时,可能很容易忘记使用发布二进制文件重建。 肯定会发生。


类似的答案 :我不会在这里重复自己,而是会链接到前面几个类似的答案。 请浏览一下,看看是否有任何铃声响起:

  • 哪个winform项目文件应该打包到安装程序中
  • wix服务安装没有足够的权限

在密切关注Stein关于二进制调试的指导原则(这是我第一次花了一点时间才完成)之后,我在我的应用程序的执行序列中附加了一个框消息(正好在我的应用程序WPF的App类的构造函数中),然后直接在消息框后面的指令上断点。 然后,我生成了应用程序,重新创建了msi,然后安装了msi。 从桌面快捷方式启动可执行文件后,出现消息框。 我在点击消息框的OK按钮之前输入了我的源代码,我附上了我的应用程序的进程(Debug – > Attach to process)。 消息框的validation在Visual Studio上返回给我,我能够一步一步地按照代码的一部分直到回到小平面上。