我有一個WiX安裝程序,它們都可以運行SqlPackage.exe
將部分已安裝的.dacpac
-封裝的SQL應用程序部署到數據庫。實際部署的數據庫文件如下就會成功:WiX/MSI:將stdout重定向到文件,輸入50自定義操作
<Property Id="CONNSTRING" Value="Data Source=localhost;Integrated Security=True;Initial Catalog=MPQS-DACPAC" />
<Property Id="SQLPACKAGEPATH" Value="C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" />
<CustomAction Id="DeployDatabase" Property="SQLPACKAGEPATH"
ExeCommand='/Action:Publish /tcs:"[CONNSTRING]" /sf:"[#My.Database.dacpac]" /p:BackupDatabaseBeforeChanges=True /p:RegisterDataTierApplication=True'
Return="check" Execute="deferred" Impersonate="yes" />
<InstallExecuteSequence>
<Custom Action="DeployDatabase" After="DuplicateFiles">NOT REMOVE</Custom>
</InstallExecuteSequence>
...我可以觀看所呈現的控制檯窗口輸出,中間安裝。
然而,它並不總是成功;例如,CONNSTRING
可以在對話框中指定並且可能不正確。如果有錯誤,它們會立即出現,然後控制檯關閉,並且日誌中出現1722錯誤。
要捕獲控制檯輸出,我曾嘗試:
<CustomAction Id="DeployDatabase" Property="SQLPACKAGEPATH"
ExeCommand='/Action:Publish /tcs:"[CONNSTRING]" /sf:"[#My.Database.dacpac]" /p:BackupDatabaseBeforeChanges=True /p:RegisterDataTierApplication=True > "[DBLogs]test.log"'
Return="check" Execute="deferred" Impersonate="yes" />
在年底> "[DBLogs]test.log"
應該(理論上)輸出重定向到那個位置的文件,而是安裝在此刻失敗了顯示控制檯窗口。看起來,控制檯中沒有文本顯示出來。
起腳是:我可以複製記錄與錯誤(與>
妥善解決,以>
)命令,將其粘貼到自己的cmd
窗口,它將執行和記錄。
我在做什麼錯?
而且更重要的是:我能做些什麼才能執行此命令和保存stdout
+ stderr
到一個日誌文件?
注意:我也嘗試過使用34型語法(這種方式解析爲50型)。兩者都表現出相同的行爲。
的說明:我最初試圖與運營商的重定向(即'「[#My.exe]」/ARGS我命令的一部分1> out.log 2>&1'),但CAQuietExec在日誌中出現'CAQuietExec:***無法識別的命令行參數'1>'。'失敗。刪除重定向後,我看到CAQuietExec登錄到MSI日誌文件,這對我的目的來說很好。 –