[英]CustomActions before and after RemoveExistingProducts
我正在嘗試建立一個將升級mysql安裝的msi。
我可以執行文件的基本升級,並且在全新安裝中一切正常,我遇到的問題是,執行升級時,我需要圍繞卸載先前版本執行一些操作。
我唯一遇到的問題是使用以下命令行更改MySQL GLOBAL設置之一
mysql.exe -u root --host=127.0.0.1 --port=5002 mysql --execute="SET GLOBAL innodb_fast_shutdown=0"
我這樣做是因為建議升級數據庫時,innodb應該執行緩慢的關閉,這是我看到的最簡單的方法。
目前,我使用以下Wix執行此操作
<CustomAction Id="Innodb_slowshutdown" Property="OLDMYSQLEXE" Execute="immediate"
ExeCommand=""[MYSQLINSTALLBINPATH]mysql.exe" -u root --host=127.0.0.1 --port=5002 mysql --execute="SET GLOBAL innodb_fast_shutdown=0""
Return="check" Impersonate="yes"/>
...
<Custom Action="Innodb_slowshutdown" After="InstallInitialize">UPGRADEFOUND and NOT UPGRADINGPRODUCTCODE and NOT REINSTALL and MYSQLINSTALLBINPATH</Custom>
<RemoveExistingProducts After="Innodb_slowshutdown" />
但是,這總是失敗,並且我不明白為什么當失敗發生時,我會從msiexec日志中復制確切的命令行,然后通過命令行運行它。
這完全符合我的預期,但是我無法弄清楚自定義操作在做什么,這是不同的。
在安裝過程中,控制台會短暫打開,這似乎可以運行MySQL可執行文件,但是參數有問題,這會導致出現大量幫助信息,盡管我無法確定這確實是發生了什么,因為它很快就會通過。
現在有什么方法可以暫停安裝,以便我可以看到控制台中的內容嗎?
誰能看到我的Wix有任何明顯的問題嗎?
編輯-
另外,我不確定這是否與用戶權限有關,我從“以管理員身份”打開的命令提示符下運行MSIEXEC,但是如果確實需要提升權限,那么當我需要使用立即輸入?
請注意,我知道即時不允許提升權限,但是我不能使用延期,因為它不允許我在RemoveExistingProducts之前執行命令。
我什至不確定與權利有什么關系,我只是指出我認為這是可能的原因,但我無法證明這一點。
Windows Installer不支持以提升的權限運行的立即自定義操作。 要執行具有提升權限的自定義操作,必須將其標記為Deferred="yes"
和Impersonate="no"
。
好的,我發現了我的錯誤,這是由於不知道Type 50 CaustomAction是如何工作的。
我所要做的就是使用一個包含要執行的可執行文件的完整路徑的屬性,並在ExecuteCmd屬性中僅使用命令行參數
<CustomAction Id="Innodb_slowshutdown" Property="OLDMYSQLEXE" Execute="immediate"
ExeCommand="-u root --host=127.0.0.1 --port=5002 mysql --execute="SET GLOBAL innodb_fast_shutdown=0""
Return="check" Impersonate="yes"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.