Visual Studio 安装程序,在复制文件之前执行自定义操作
Visual Studio Installer, perform custom action before files are copied
我正在使用常规 Visual Studio 安装项目来部署服务。
我需要在安装程序复制文件之前 执行自定义操作 。
AFAIS 所有自定义操作(派生自 Installer ...)都在 文件被复制后执行(这很明显,因为它们需要以某种方式执行)。
实际问题是,安装程序会自行检查哪些文件正在使用并在复制前停止服务(顺便说一句,安装程序停止应用程序的对话框是垃圾 - 但这是一个不同的问题) .基本上这是个好主意。但是,安装后服务配置设置为如果不是 运行 则重新启动服务(服务控制管理器执行此工作)。此配置是一项要求,不能永久更改(只能暂时更改)。稍后在升级安装过程中,这有时会与(升级)安装过程发生冲突。因此,在升级安装的情况下,我想将(旧)服务配置更改为 not 在文件复制到目标文件夹之前重新启动或什至卸载(旧)服务。否则,如果文件仍在使用中,复制文件有时会失败(因为旧服务再次 运行(如上文所述,刚刚由服务控制管理器重新启动))。长话短说,我需要在安装程序复制(新)文件之前执行一些代码。
这是一个相关问题,但答案不符合我的问题:
Take backup of target dir before files are copied into the target directory by msi Installer
实际答案似乎是:不可能。
我没有时间完全切换到 WIX 或类似的替代品。
这不是一个很好的解决方案,但它确实有效。
我解决问题如下:
- 创建一个新的 "MySetup.exe" 应用程序(Forms、WPF 或其他)
- MySetup.exe 根据需要检查现有服务安装(请参阅我的原始问题的详细信息)并卸载服务。 所以它执行 'custom action'.
- MySetup.exe 包含原始 MSI 文件并在确保先决条件后启动它。
- 它检查 MSI 安装的结果以进一步处理错误。
- 一个优点是我可以轻松地向 MSI 安装添加参数,例如日志文件名。
我正在使用常规 Visual Studio 安装项目来部署服务。 我需要在安装程序复制文件之前 执行自定义操作 。 AFAIS 所有自定义操作(派生自 Installer ...)都在 文件被复制后执行(这很明显,因为它们需要以某种方式执行)。
实际问题是,安装程序会自行检查哪些文件正在使用并在复制前停止服务(顺便说一句,安装程序停止应用程序的对话框是垃圾 - 但这是一个不同的问题) .基本上这是个好主意。但是,安装后服务配置设置为如果不是 运行 则重新启动服务(服务控制管理器执行此工作)。此配置是一项要求,不能永久更改(只能暂时更改)。稍后在升级安装过程中,这有时会与(升级)安装过程发生冲突。因此,在升级安装的情况下,我想将(旧)服务配置更改为 not 在文件复制到目标文件夹之前重新启动或什至卸载(旧)服务。否则,如果文件仍在使用中,复制文件有时会失败(因为旧服务再次 运行(如上文所述,刚刚由服务控制管理器重新启动))。长话短说,我需要在安装程序复制(新)文件之前执行一些代码。
这是一个相关问题,但答案不符合我的问题: Take backup of target dir before files are copied into the target directory by msi Installer
实际答案似乎是:不可能。 我没有时间完全切换到 WIX 或类似的替代品。 这不是一个很好的解决方案,但它确实有效。 我解决问题如下:
- 创建一个新的 "MySetup.exe" 应用程序(Forms、WPF 或其他)
- MySetup.exe 根据需要检查现有服务安装(请参阅我的原始问题的详细信息)并卸载服务。 所以它执行 'custom action'.
- MySetup.exe 包含原始 MSI 文件并在确保先决条件后启动它。
- 它检查 MSI 安装的结果以进一步处理错误。
- 一个优点是我可以轻松地向 MSI 安装添加参数,例如日志文件名。