概要 :本質的に、以下は次のように述べています:
1)
SQLServerのsetup.exe
を実行するためのカスタムアクションを無効にします あなたのcurrentMSIで。2)
基本的なWiX Burn Bundle
を作成します SQLServersetup.exe
を開始します まず、VisualStudioInstallerプロジェクトで生成されたMSI
を開始します その後。またはさらに良いことに、WiXでもMSI全体を作成します。 高度なインストーラーなどの商用ツール およびInstallshield 実行可能なオプションです-組み込みのサポートを備えています(機能は前提条件のバージョンによって異なります)。
バーンバンドル-モックアップ (インスピレーション、より多くのインスピレーション):
WiX Burnマークアップがどのように機能するかを示すためだけに:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MyCoolTestApp" Version="1.0.0.0"
Manufacturer="Someone" UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<util:FileSearch Path="[WindowsFolder]System32\ucrtbase.dll" Variable="VCDISTINSTALLED"/>
<Chain>
<ExePackage SourceFile="vc_redist.x64.exe"
DetectCondition="VCDISTINSTALLED"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole" />
<MsiPackage SourceFile="ShortcutDesktop.msi" />
</Chain>
</Bundle>
</Wix>
技術的な原因 :私はVisualStudioインストーラープロジェクトの専門家ではありません-言わなければなりません-毎回。ただし、ご存知のように、これらのプロジェクトにはいくつかの制限と癖があります。癖の1つは、すべてのカスタムアクションが、起動ユーザーのなりすましなしに、遅延モードおよびシステムコンテキスト(LocalSystemとして実行)で実行されることです。これは、見られる問題の原因である可能性があります-あなたが自分自身を述べているように。
VSインストーラープロジェクトから取得したMSIを後処理することは可能ですが、SQLServerのインストールを開始するためのカスタムアクションの使用を排除することをお勧めします。詳細は以下をご覧ください。後処理では、カスタムアクションタイプを3078から1030に変更して、ユーザーのなりすましを有効にします。これは、カスタムアクションが昇格して実行されないことを意味します。したがって、MSI全体が昇格して起動された場合にのみ成功します。
注 :以下では、WiXの書き込み機能(オープンソース)、または同等の有能な商用ツールを使用することをお勧めします。 WiXの書き込み機能は、Visual Studio 2017インストーラープロジェクトによって作成されたMSIファイル、またはその他のツールによって作成されたMSIファイル(EXEファイル)で使用できます。 VS2017で生成されたMSIをWiXバンドル(またはEXEファイル)に接続するだけです。 WiXは明らかにMSIファイル自体も作成できます(これがフレームワークの目的です)。 WiXクイックスタートリンク 。
MSIテクノロジーの癖 :MSIカスタムアクションから他のインストーラーをキックオフすることは良い習慣ではありません。他のインストーラーが別のMSI(MSI以外のsetup.exeだけではない)の場合、技術的な制限(2つのMSI InstallExecuteSequences
がない)のために、これを確実に行うことさえできません。 インストール中にミューテックスが設定されているため、同時に実行できます)。つまり、MSIの同時インストールは禁止されており、技術的に不可能です。
書き込み :WiXの書き込み機能を入力してください -downloader
/ bootstrapper
/sequencer
独自のラッパーsetup.exe
からパッケージのインストールを順番に実行するツール 。 MSIファイル、EXEファイル、およびその他の種類のパッケージを、MSIのミューテックスのような技術的制限なしに次々にインストールできます。並列実行ではなく、シリアル。
SQLServerのインストール :このようなBurnバンドルを介してSQL Server EXEインストーラーを起動でき、マネージコードで指定する代わりに(必要なランタイム要件を使用して)、リストしたパラメーターをコマンドラインパラメーターとして指定できます。その後、同じバンドルからメインのMSIを開始します。
バーンクラッシュコース :Burnには学習曲線があります。それは「面倒」です(コード/マークアップです-常に面倒です)が、非常に柔軟性があります。その高度なインストーラーを追加したい 詳細を適切に調査する時間がなかったとしても、SQLServerの展開を適切にサポートしているようです。 Installshield スイートプロジェクトを使用して、EXEファイルとMSIファイルを順番にインストールできます 機能(リンクされたスクリーンショットを確認してください)。 SQLServerの全体的なサポートがわからない。
いくつかのBurnサンプルリンク :
- ブートストラップ
- 方法:Burnを使用して.NETFrameworkをインストールする
- Burnでできることの良いサンプル:https://github.com/frederiksen/Classic-WiX-Burn-Theme。
- 私自身の「HelloWorld」スタイルのBurnBundleマークアップ(追加のリンク付き)。
- Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
- Burnを使用すると、独自のセットアップGUIアプリケーション(高度)を作成できます:https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI(1レベル上にさらに多くのサンプル)
いくつかのリンク :
- Wix Burn:Bootstrapperがそれ自体をインストールしないようにする方法
- WixBurnhelloworldの例
- WiXでのBurn/bootstrapperのコマンドラインフラグ/オプションの包括的なリスト
- WixBurn-カスタムテンプレート
言語変換.mstをBurnBundleChainに追加しますか?(リンクが多すぎます)