我正在使用常规的 Visual Studio 安装项目来部署服务。在安装程序复制文件之前,我需要执行自定义操作。AFAIS 所有自定义操作(源自 Installer ...)都是在复制文件后执行的(这很明显,因为它们需要以某种方式执行)。
实际的问题是,安装程序会自行检查哪些文件正在使用并在复制之前停止服务(顺便说一句,安装程序停止应用程序的对话框告诉垃圾 - 但这是一个不同的问题)。基本上这是一个好主意。但是,安装后,服务配置设置为在服务未运行时重新启动服务(服务控制管理器执行此工作)。此配置是一项要求,不能永久更改(只能临时更改)。稍后在升级安装过程中,这有时会与(升级-)安装过程发生冲突。因此,在升级安装的情况下,我想将(旧)服务配置更改为不在将文件复制到目标文件夹之前重新启动甚至卸载(旧)服务。否则,如果文件仍在使用中,复制文件有时会失败(因为旧服务再次运行(刚刚由服务控制管理器重新启动),如上所述)。长话短说,我需要在安装程序复制(新)文件之前执行一些代码。
这是一个相关的问题,但答案不适合我的问题: 在文件被 msi 安装程序复制到目标目录之前备份目标目录