0

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

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

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

到底是怎么回事?如何从 MSI 安装程序获取更多信息?

值得一提的是,我的机器是 64 位的,但该项目是针对 32 位 ( x86 ) 构建的。我以前将它构建为任何 CPU,现在我用什么构建它并不重要,没有结果。

我做了更多的研究,发现如果Debugger.Break();不再工作可能是由于依赖问题,我在项目上没有收到错误或警告。我以详细的方式运行了 MSI,但我也无法从中做出任何事情。

在日志上迷路后,我没有任何用处。我重新开始并创建了一个带有弹出窗口的新安装程序类。那行得通。之后添加了一个 Break() ,它也起作用了,添加了我想运行的 using Process 语句并且它起作用了......一次。

之后我发现:如果我离开Debugger.Break()它会被跳过,但如果我删除它它会起作用......

是的,这是随机的……有什么关系?

4

2 回答 2

0

在另一台机器上尝试MSI - 如果它可以正常工作,那么 MSI 没有问题,问题出在您的机器上。一次 MSI 执行可能会留下一些残留物。

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

于 2013-05-07T22:23:00.943 回答
0

值得首先在源代码管理中检查对安装程序进行了哪些更改。

在任何情况下,我都看到过安装人员表现得很奇怪的各种奇怪情况。几点建议:

  • 确保 base.Install 是最后一个。
  • 以管理员身份运行 VS。
  • 重新创建安装程序项目(它们可能会损坏)。
于 2013-05-07T22:10:45.473 回答