亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢測機器中運行的 SQLCMD 的正確方法 - WIX 安裝程序先決條件

檢測機器中運行的 SQLCMD 的正確方法 - WIX 安裝程序先決條件

C#
冉冉說 2021-06-01 16:14:07
我正在編寫一個自定義操作來使用先決條件來檢測 SQLCMD 是否正在機器上工作。我可以使用下面的代碼檢查機器上是否有 SQLCMD。在安裝程序中,我們使用 CMDPrompt 來處理 SQLCMD,但如果機器在環境變量中沒有 SQLCMD 路徑,它將無法工作。但我也想知道為什么 CMDprompt 給出'sqlcmd' is not recognized as an internal or external command error.[CustomAction]        public static ActionResult FindSqlCMD(Session session)        {            DebugMsg(session, "Start FindSqlCMD");            string[] sqlVersions = session["SQLVERSIONS"].Split(';');            List<RegistryKey> sqlKeys = new List<RegistryKey>();            var sqlDacPaths = new string[] { "C:\\Program Files (x86)\\Microsoft SQL Server\\{0}\\DAC\\bin", "C:\\Program Files\\Microsoft SQL Server\\{0}\\DAC\\bin" };            var sqlPackageName = "SqlPackage.exe";            foreach (string SqlVersion in sqlVersions)            {                foreach (var sqlDacPath in sqlDacPaths)                {                    var path = string.Format(sqlDacPath, SqlVersion);                    if (Directory.Exists(path))                    {                        var sqlPackagePath = Path.Combine(path, sqlPackageName);                        if (File.Exists(sqlPackagePath))                        {                            session["SQLBINDIR"] = sqlPackagePath;                            return ActionResult.Success;                        }                    }                }            }            DebugMsg(session, string.Format("Didn't find any SQL DAC SQLPackage"));            session.Log("End FindSqlCMD");            return ActionResult.Success;        }
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

最好盡量避免exe自定義操作??赡艿慕鉀Q方案是通過 WiX 查找 sqlcmd:


 <!-- Find sqlcmd.exe path  -->

<Property Id="SQLBINDIR">

  <RegistrySearch Id="SqlBinDir11x64" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" Win64="yes" />

  <RegistrySearch Id="SqlBinDir10x64" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" Win64="yes" />

  <RegistrySearch Id="SqlBinDir90x64" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" Win64="yes" />

  <RegistrySearch Id="SqlBinDir11" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" />

  <RegistrySearch Id="SqlBinDir10" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" />

  <RegistrySearch Id="SqlBinDir90" 

                  Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup" 

                  Name="Path" 

                  Type="raw" />


</Property>

之后你可以運行它


 <CustomAction Id="sqlcmd.cmd" 

              Property="sqlcmd" 

              Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -E -S $(var.serverinstance) -V 1 -i &quot;$(var.inputfile)&quot; -o &quot;$(var.outputfile)&quot;" />



查看完整回答
反對 回復 2021-06-05
  • 1 回答
  • 0 關注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號