未触发自定义操作

Custom Action not being fired

最近,我被分配了为应用程序创建部署包的任务,顺便说一句,我是全新的。到目前为止,一切顺利。现在需要从将与安装文件捆绑在一起的 zip 文件中提取文件。因此,我不得不在安装程序 class 的 'Commit' 部分编写自定义操作。我在同一解决方案下的 'Class Library' 类型的新项目中添加了 Installer class。我在'base.Commit(savedState)'之后写了代码。

我尝试在事件入口点显示 MessageBox,使用了 Debugger.Launch(), Debugger.Break() 但是不知何故,无论我做什么,自定义操作似乎都不愿意完全被击中,应用程序就会自行安装。我搜索了很多网站和博客,但到目前为止没有任何帮助。

我已将我的安装程序 class(在本例中为 SampleApp.exe)分配给部署项目中的所有自定义操作模式(安装、提交、回滚和卸载)。任何帮助。

P.S。我正在使用 Visual Studio 2010 安装项目。

提前致谢!

您可能应该尝试 class 库 Dll,而不是可执行文件(通常用于服务之类的东西)。

如果您所做的只是调用 Commit,则不需要所有节点。为什么要提交?在大多数情况下,安装都是一样的。

如果您没有看到 MessageBox,则可能是您的 CA 没有被调用,这可能是因为它不是 class 库。请注意,您的 CA 不是 运行 在交互式用户上下文中 - 它是从 msiexec 进程 运行 系统帐户调用的,因此您必须非常明确(比如)zip 文件的路径,并且任何用户配置文件文件夹都可能会失败,因为系统帐户实际上并没有它们。

这些是什么文件,它们在磁盘上的什么位置?如果它们是 用户配置文件 ,您可以将 zip 文件安装到每个机器的位置,然后 让应用程序本身将文件 解压缩到所需位置首次发布。从您的设置中解压缩不是好的做法 - 它容易出错且设计不佳。

使用该应用程序允许适当的异常处理交互性(如果出现问题可以通知用户)。完成解压缩后在 HKCU 中设置一些注册表标志,这样它不会发生多次,并且每个用户执行一次解压缩。