web-dev-qa-db-ja.com

WiX-前提条件とサードパーティアプリケーションをインストールする

C#アプリケーション用のwixWindowsインストーラーがあります。動作しています。アプリケーションをインストールおよびアンインストールできます。しかし、アプリケーションと一緒にインストールしたい前提条件やその他のサードパーティアプリケーションはほとんどありません。

前提条件:

  1. Microsoft .NET Framework 4(x86およびx64)-dotNetFx40_Full_x86_x64.exe
  2. SQL Server 2008 Express
    1. SQLEXPR_x64_ENU.EXE
    2. SQLEXPR32_x86_ENU.EXE
  3. SQL Server Compact 3.5 SP2
    1. SSCERuntime-ENU.msi
    2. SSCERuntime-ENU-x64.msi

サードパーティアプリケーション:

  1. TeamViewer-TeamViewer_Setup.exe

もちろん、すべての前提条件とサードパーティアプリケーションの完全なガイドラインを探しているわけではありません。これらのexeおよびmsiセットアップをwixインストールの一部としてどのように正確に埋め込むことができるかを理解するために皆さんの助けが必要です。

また、_x64_用のものと_x86_用のものがあるため、OSのバージョンとアーキテクチャを十分に処理できる必要があります。これはwixでどのように達成されますか。

私はしばらくインターネットで検索してきましたが、具体的なことは何も機能していないようです。

これらのアプリケーションがインストールされていない場合は、ソフトウェアもインストールされないようにする必要があります。それに加えて、前提条件またはサードパーティのアプリケーションのいずれかがすでにインストールされている場合は、再度インストールしないでください。

これはいくつかのwixツールを使用して実行できると思いますが、ハウツーに関する具体的な指示を得ることができません。

編集1

Microsoft .NET Framework 4 (x86 and x64)をインストールしましたが、現在直面している問題は_SQL Server Compact 3.5 SP2_をインストールできないことです。私は物事をより明確にするために一つずつ物事を行っています。ここで私はあなたの人々がレビューできるように私のコードを共有しています:

_<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.Microsoft.com/wix/2006/wi"
   xmlns:util="http://schemas.Microsoft.com/wix/UtilExtension">
<Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="Billy"
        UpgradeCode="PUT-GUID-HERE">
  <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
  <Chain>

    <PackageGroupRef Id="Netfx4Full"/>
    <PackageGroupRef Id="SQLExpressCE"/>

    <!-- Install Application -->
    <MsiPackage Id="MyApplication" SourceFile="$(var.Installer.TargetPath)"/>

  </Chain>
</Bundle>

<Fragment>
  <!-- Check for .NET 4.0 -->
  <util:RegistrySearch Root="HKLM"
                       Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                       Value="Version"
                       Variable="Netfx4FullVersion" />
  <util:RegistrySearch Root="HKLM"
                       Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                       Value="Version"
                       Variable="Netfx4x64FullVersion"
                       Win64="yes" />

  <!-- Install .NEt 4.0 -->
  <PackageGroup Id="Netfx4Full">
    <ExePackage Id="Netfx4Full"
                DisplayName="Microsoft .NET Framework 4.0"
                Compressed="no"
                Cache="yes"
                PerMachine="yes"
                Permanent="yes"
                Protocol="netfx4"
                Vital="yes"
                SourceFile=".\prerequisites\dotNetFx40_Full_x86_x64.exe"
                InstallCommand="/passive /norestart"
                DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />
  </PackageGroup>

  <!-- Install SQL Server CE -->
  <PackageGroup Id="SQLExpressCE">
    <MsiPackage
              Cache="no"
              Compressed="no"
              ForcePerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile=".\prerequisites\SSCERuntime-ENU.msi"
              InstallCondition="NOT VersionNT64 AND SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
    <MsiPackage
              Cache="no"
              Compressed="no"
              ForcePerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile=".\prerequisites\SSCERuntime-ENU-x64.msi"
              InstallCondition="VersionNT64 AND NOT SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
  </PackageGroup>

</Fragment>
</Wix>
_

注:上記のコードは_.NET Framework_をインストールしますが、_SQL Server Compact 3.5 SP2_はインストールしません


EDIT -2

_Tom Blodget_の回答を参照した後、これまでに到達しましたが、SQLExeパッケージとMSIパッケージに同じインストールコマンドを与える方法を理解できません。私もこの答えを通過しました https://stackoverflow.com/a/19010097/1182021 of _Mr. Neil Sleightholm_しかし、これは_SQL 2012_用です、どうすればこれを同じにできますか_SQL 2008 Server_とCEのあるもの(条件と手順)

_<PackageGroup Id="SQLExpressCE">
  <ExePackage
            Cache="no"
            Compressed="no"
            Permanent="no"
            Vital="yes"
            InstallCommand="/QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS /BROWSERSVCSTARTUPTYPE=Automatic /SQLSVCSTARTUPTYPE=Automatic /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT=&quot;NT AUTHORITY\Network Service&quot; /SQLSYSADMINACCOUNTS=&quot;BUILTIN\ADMINISTRATORS&quot; /AGTSVCACCOUNT=&quot;NT AUTHORITY\Network Service&quot; /SECURITYMODE=SQL /SAPWD=&quot;wegamed&quot;"
            SourceFile=".\prerequisites\SQLEXPR32_x86_ENU.EXE"
            DownloadUrl="http://download.Microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x86_ENU.exe"
            InstallCondition="NOT SQLServer2008R2Installed AND NOT SQLServerInstalled" />
  <ExePackage DetectCondition="VersionNT64"
            Cache="no"
            Compressed="no"
            Permanent="no"
            Vital="yes"
            InstallCommand="/QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS /BROWSERSVCSTARTUPTYPE=Automatic /SQLSVCSTARTUPTYPE=Automatic /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT=&quot;NT AUTHORITY\Network Service&quot; /SQLSYSADMINACCOUNTS=&quot;BUILTIN\ADMINISTRATORS&quot; /AGTSVCACCOUNT=&quot;NT AUTHORITY\Network Service&quot; /SECURITYMODE=SQL /SAPWD=&quot;wegamed&quot;"
            SourceFile=".\prerequisites\SQLEXPR_x64_ENU.EXE"
            DownloadUrl="http://download.Microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x86_ENU.exe"
            InstallCondition="NOT SQLServer2008R2Installed AND NOT SQLServerInstalled" />
</PackageGroup>
_

しかし、セットアップを完了できません。ライセンス契約に同意するまで機能するので、インストールコマンドが原因だと思います。

18

「インストールパッケージバンドルの構築」に関するWiX3.7のドキュメントを参照してください。 MSBuild、SharpDevelop、またはVisual Studio(Express以外)を使用している場合は、WiXBootstrapperプロジェクトテンプレートを使用できます。ツールセットのコマンドラインツールを自分で呼び出す場合は、MSIファイルを作成する場合と同じように、キャンドルとライトがあります。

「方法:Burnを使用して.NETFrameworkをインストールする」に関するWiX3.7のドキュメントを参照してください。注:WiXは、.NET 4.0用に2つの事前定義されたパッケージを提供します。どちらも、インストール時にMicrosoftからダウンロードされます。 1つは完全なパッケージで、もう1つはユーザーのシステムでダウンロードが必要なだけのダウンローダーパッケージです。インストーラーをインターネットアクセスに依存させたくない場合は、バンドルする任意のexeファイルと同じように、独自のパッケージを作成できます。明らかに、WiXソースコードは、必要な検出条件、インストールコマンド、およびアンインストールコマンドを備えているため、.NET4.0パッケージに役立ちます。

他の各パッケージのインストールドキュメントを参照して、検出条件、インストールコマンド、およびアンインストールコマンドに何を入れる必要があるかを確認してください。また、各パッケージにダウンロードURLを含めるかどうかを選択できます。

SQL Server CE

<PackageGroup Id="SQLExpressCE">
    <!-- Per http://support.Microsoft.com/kb/974247, on a 64-bit system both 32-bit and 64-bit packages must be installed and be the same version. -->
    <MsiPackage
          Visible="yes"
          Cache="no"
          Compressed="no"
          ForcePerMachine="yes"
          Permanent="yes"
          Vital="yes"
          SourceFile=".\prerequisites\SSCERuntime-ENU.msi" />
    <MsiPackage
          Visible="yes"
          Cache="no"
          Compressed="no"
          ForcePerMachine="yes"
          Permanent="yes"
          Vital="yes"
          SourceFile=".\prerequisites\SSCERuntime-ENU-x64.msi"
          InstallCondition="VersionNT64" />
</PackageGroup>

WiXバーンのトラブルシューティング

Burnは、それ自体と実行するMsiPackagesのログファイルを作成します。 %TEMP%フォルダーを確認してください。

16
Tom Blodget