21

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

前提条件:

  1. Microsoft .NET Framework 4 (x86 および x64) - dotNetFx40_Full_x86_x64.exe
  2. SQL Server 2008 エクスプレス
    1. SQLEXPR_x64_ENU.EXE
    2. SQLEXPR32_x86_ENU.EXE
  3. SQL Server コンパクト 3.5 SP2
    1. SSCERuntime-ENU.msi
    2. SSCERuntime-JPN-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


編集-2

回答を参照した後Tom Blodget、ここまで到達しましたが、SQL Exe パッケージのインストール コマンドと MSI パッケージのインストール コマンドを同じように指定する方法を理解できません。私もこの答えを調べましたhttps://stackoverflow.com/a/19010097/1182021のですMr. Neil Sleightholmが、これは のためのものですと(条件と手順)SQL 2012でこれと同じことを行うにはどうすればよいですか?SQL 2008 ServerCE

<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>

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

4

1 に答える 1

18

「Building Installation Package Bundles」の WiX 3.7 ドキュメントを参照してください。MSBuild、SharpDevelop、または Visual Studio (非 Express) を使用している場合は、WiX Bootstrapper プロジェクト テンプレートを使用できます。ツールセットのコマンド ライン ツールを自分で呼び出したい場合は、MSI ファイルをビルドする場合と同じように、キャンドルとライトを使用できます。

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

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

SQL サーバー 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 は、それ自体と、それが実行するすべての MsiPackage のログ ファイルを作成します。%TEMP% フォルダを確認してください。

于 2013-11-08T00:14:14.220 に答える