安装程序安装程序上的自定义操作无法在C#/ .NET中运行

时间:2013-05-07 21:05:24

标签: c# .net windows-installer

我有这个项目需要在安装过程中运行InstallerClass。

我将它添加为自定义操作,并且它已经使用了很长时间。我们对这个类进行了一些维护,清理了解决方案,重建了解决方案,现在没有触发自定义操作。

我知道它们没有被触发,因为我在清理之前有Debugger.Break()个调用工作,并且不再创建要创建的注册表项。

发生了什么事?如何从MSI安装程序获取更多信息?

值得的是,我的机器是64位,但该项目意味着并构建为32位( x86 )。之前我曾经把它构建为 Any CPU ,现在无论我用它构建什么都没关系,没有结果。

我已经做了一些研究,发现如果Debugger.Break();不再工作可能是由于依赖问题,我在项目中没有得到任何错误或警告。我在详细的情况下运行MSI,但我也无法做出任何事情。

在日志上迷路后,我没有任何用处。我重新开始并创建了一个带有弹出窗口的新Installer类。有效。之后添加了一个Break(),它也有效,添加了我想运行的使用Process语句并且它运行了一次。

之后我发现:如果我离开Debugger.Break()它会被跳过,但是如果我删除它就会有效......

是的,这是随机的......这是什么交易?

2 个答案:

答案 0 :(得分:0)

首先检查源代码管理中对安装程序所做的更改是值得的。

无论如何,我已经看到了各种奇怪的情况,安装人员表现得很奇怪。一些建议:

  • 确保base.Install是最后一个。
  • 以管理员身份运行VS.
  • 重新创建安装程序项目(它们可能已损坏)。

答案 1 :(得分:0)

尝试另一台机器上的MSI - 如果它有效,那么MSI没有任何问题,而且问题在于你的机器。一个MSI执行可能会留下一些残余。

从您的计算机上卸载产品,然后使用产品代码尝试MSIZap。这将清除您的机器上任何卸载可能遗留下来的遗留物。