簡體   English   中英

Visual Studio安裝程序,在復制文件之前執行自定義操作

[英]Visual Studio Installer, perform custom action before files are copied

我正在使用常規的Visual Studio安裝項目來部署服務。 在安裝程序復制文件之前 ,我需要執行自定義操作。 AFAIS所有自定義操作(源自Installer ...)都是在復制文件執行的(這很明顯,因為它們需要以某種方式執行)。

實際的問題是,安裝程序會自行檢查正在使用的文件並在復制之前停止服務(順便說一句,安裝程序停止應用程序的對話框告訴您垃圾-但這是一個不同的問題)。 基本上,這是一個好主意。 但是,安裝后,如果服務配置未運行,則將其配置為重新啟動服務(服務控制管理器執行此作業)。 此配置是必需的,不能永久更改(只能臨時更改)。 稍后在升級安裝過程中,這有時會與(升級)安裝過程發生沖突。 因此,在進行升級安裝的情況下,我想將(舊)服務配置更改為在文件復制到目標文件夾之前重新啟動甚至卸載(舊)服務。 否則,如果文件仍在使用中,則復制文件有時會失敗(因為舊的服務再次運行(由服務控制管理器重新啟動),如上所述)。 長話短說,我需要在安裝程序復制(新)文件之前執行一些代碼。

這是一個相關的問題,但答案與我的問題不符: msi Installer將文件復制到目標目錄之前,請備份目標目錄

實際的答案似乎是: 這是不可能的 我沒有時間完全切換到WIX或類似的替代品。 這不是一個很好的解決方案,但可以。 我解決了如下問題:

  • 創建一個新的“ MySetup.exe”應用程序(Forms,WPF或其他)
  • MySetup.exe根據需要檢查現有服務的安裝(請參閱我的原始問題的詳細信息)並卸載服務。 因此,它執行“自定義操作”。
  • MySetup.exe包含原始MSI文件,並在確保先決條件后啟動該文件。
  • 它檢查MSI安裝的結果以進行進一步的錯誤處理。
  • 優點之一是,我可以輕松地將參數(例如日志文件名)添加到MSI安裝中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM