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:"MyDacpac.dacpac" /tsn:localhost /tdn:MyDb"
Execute="immediate" />
カスタム アクションは、次のように「InstallFinalize」の後に実行するシーケンスです。
<InstallExecuteSequence>
<Custom Action="DeployMyDb" After="InstallFinalize"/>
</InstallExecuteSequence>
</Product>
dacpac がデプロイされる (つまり、カスタム アクションが実行される) と、組み込みバイナリの 1 つであるアセンブリ 'Microsoft.Data.Tools.Utilities' に対して 'FileNotFoundException' がスローされます。
このexeを実行するために必要な手順や追加事項について教えてください。