我正在使用常规的Visual Studio安装项目来部署服务。 我需要在安装程序复制文件之前执行 的自定义操作。 AFAIS所有自定义操作(源自Installer ...)都是在复制文件后 执行的(这很明显,因为它们需要以某种方式执行)。
实际的问题是,安装程序会自行检查正在使用的文件并在复制之前停止该服务(顺便说一句,安装程序停止应用程序的对话框告诉您垃圾-但这是一个不同的问题)。基本上,这是一个好主意。但是,安装后,如果服务配置未运行,则将其配置为重新启动服务(服务控制管理器执行此作业)。此配置是必需的,不能永久更改(只能临时更改)。稍后在升级安装过程中,这有时会与(升级)安装过程发生冲突。因此,在进行升级安装的情况下,我想将(旧)服务配置更改为 not 重新启动,甚至在将文件复制到目标文件夹之前卸载(旧)服务。否则,如果文件仍在使用中,则复制文件有时会失败(因为旧的服务再次运行(由服务控制管理器重新启动),如上所述)。长话短说,我需要在安装程序复制(新)文件之前执行一些代码。
这是一个相关问题,但答案与我的问题不符: Take backup of target dir before files are copied into the target directory by msi Installer
答案 0 :(得分:0)
实际答案似乎是:不可能。 我没有时间完全切换到WIX或类似的替代品。 这不是一个很好的解决方案,但可以。 我解决了如下问题: