gpt4 book ai didi

c# - 使用 WIX 创建安装程序时执行 sqlpackage.exe(它有几个依赖的 dll)

转载 作者:行者123 更新时间:2023-12-01 15:03:57 31 4
gpt4 key购买 nike

我需要在使用 WIX 安装数据库时部署 dacpac。为此,我考虑过使用必要的开关运行 SQLPackage.exe 命令,因此我使用二进制标记嵌入了必要的 exe 和 dll,如下所示

<Binary Id="Microsoft.Data.Tools.Schema.Sql.dll" SourceFile="..\DeployDBs\DAC\Microsoft.Data.Tools.Schema.Sql.dll"/>
<Binary Id="Microsoft.Data.Tools.Schema.Tasks.Sql.11.dll" SourceFile="..\DeployDBs\DAC\Microsoft.Data.Tools.Schema.Tasks.Sql.11.dll"/>
<Binary Id="Microsoft.Data.Tools.Schema.Utilities.Sql.11.dll" SourceFile="..\DeployDBs\DAC\Microsoft.Data.Tools.Schema.Utilities.Sql.11.dll"/>
<Binary Id="Microsoft.Data.Tools.Utilities.dll" SourceFile="..\DeployDBs\DAC\Microsoft.Data.Tools.Utilities.dll"/>
<Binary Id="Microsoft.SqlServer.Dac.dll" SourceFile="..\DeployDBs\DAC\Microsoft.SqlServer.Dac.dll"/>
<Binary Id="SqlPackage" SourceFile="..\DeployDBs\DAC\SqlPackage.exe"/>
<Binary Id="SqlPackage.exe.config" SourceFile="..\DeployDBs\DAC\SqlPackage.exe.config"/>

然后使用自定义操作调用 SqlPackage.exe,如下所示

 <CustomAction Id="DeployMyDb" BinaryKey="SqlPackage" 
ExeCommand="/a:publish /sf:&quot;MyDacpac.dacpac&quot; /tsn:localhost /tdn:MyDb"
Execute="immediate" />

自定义操作是在“InstallFinalize”之后运行的序列,如下所示

<InstallExecuteSequence>
<Custom Action="DeployMyDb" After="InstallFinalize"/>
</InstallExecuteSequence>
</Product>

部署 dacpac 时(即运行自定义操作),它会为作为嵌入式二进制文件之一的程序集“Microsoft.Data.Tools.Utilities”抛出“FileNotFoundException”。

请告知缺少的步骤或运行此 exe 需要完成的添加操作。

最佳答案

我找到了解决方案。

我没有采用上述方法,而是为自定义操作创建了一个单独的项目,并添加了对所需二进制文件的引用(即我之前在 标签中提到的二进制文件),并添加了在二进制标签中形成的相应 dll 并调用它通过

得到的解决方案如下:

<Binary Id="InstallerWix_CustomAction.CA.dll" SourceFile="..\InstallerWix_CustomAction\bin\Debug\InstallerWix_CustomAction.CA.dll" />

<CustomAction Id="DeployDb" BinaryKey="InstallerWix_CustomAction.CA.dll"
DllEntry="CustomAction1"
Execute="immediate" Return="check" />

<InstallExecuteSequence>
<Custom Action="DeployDb" After="InstallFinalize"/>
</InstallExecuteSequence>

关于c# - 使用 WIX 创建安装程序时执行 sqlpackage.exe(它有几个依赖的 dll),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604411/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com