3

私はC#でwpfアプリケーションを開発しています。VisualStudio2010でwpfアプリケーションのセットアッププロジェクトを正常に作成しました。データベースとしてMSAccess2010を使用しました。すべてのコンピューターに正常にインストールされます。ただし、一部のコンピューターにはMicrosoft Officeがインストールされておらず、一部のコンピューターにはMS Office2003などの下位バージョンのMSOfficeがあります。これらのコンピューターにアプリケーションをインストールすると、接続の問題が発生します。何をすればいいのか教えていただけますか?VisualStudio2010セットアッププロジェクトにMSAccess2010の前提条件を含める必要がありますか?それらはどれですか、そしてそれらを含める方法はありますか?

4

2 に答える 2

5

同じ問題が発生しましたが、Microsoft Access Database Engine 2010用のBootstrapperパッケージを既に作成しました。このパッケージには、x64バージョンも含まれています。したがって、64台のマシンでも動作するはずです。前提条件を含めるには、そのブートストラッパーパッケージを追加する必要があります。その後、前提条件リストでそれを取得できます。それはすでにあなたが知っていると思います。Bootstrapperをビルドするには、2つのマニフェストXMLファイルが必要です。1つはproduct.xmlで、もう1つはpackage.xmlですよね?私は以下のすべてのXMLスクリプトを書いています。

製品XML:

<Product
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  ProductCode="Access.Database.Engine.2010"
>
  <!-- Defines list of files to be copied on build -->
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="AccessDatabaseEngine.exe" HomeSite="http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe" />
    <PackageFile Name="AccessDatabaseEngine_x64.exe" HomeSite="http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe" />
  </PackageFiles>

  <RelatedProducts>
    <DependsOnProduct Code="Microsoft.Net.Framework.2.0" />
  </RelatedProducts>

  <InstallChecks>
            <MsiProductCheck Property="IsInstalled" 
                Product="{90140000-00D1-0409-0000-0000000FF1CE}"/>
  </InstallChecks>

  <Commands>
    <Command PackageFile="AccessDatabaseEngine.exe"
         Arguments='/passive'>

      <!-- These checks determine whether the package is to be installed -->

      <InstallConditions>
        <!-- ByPass if the Processor is not x86 -->
        <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel"/>

    <!-- ByPass if we have installed -->
        <BypassIf Property="IsInstalled" Compare="ValueGreaterThan" Value="0" />

        <!-- Block install if user does not have admin privileges -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>

        <!-- Block install on Win95 -->
        <FailIf Property="Version9x" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/>

        <!-- Block install on NT 4 or less -->
        <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/>
      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>
    </Command>

    <Command PackageFile="AccessDatabaseEngine_x64.exe"
         Arguments='/passive'>

      <!-- These checks determine whether the package is to be installed -->

      <InstallConditions>
        <!-- ByPass if the Processor is not x64 -->
        <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="AMD64"/>

    <!-- ByPass if we have installed -->
        <BypassIf Property="IsInstalled" Compare="ValueGreaterThan" Value="0" />

        <!-- Block install if user does not have admin privileges -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>

        <!-- Block install on Win95 -->
        <FailIf Property="Version9x" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/>

        <!-- Block install on NT 4 or less -->
        <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/>
      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>
    </Command>

  </Commands>
</Product>

パッケージXML:

<?xml version="1.0" encoding="utf-8" ?> 

<Package
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  Name="DisplayName"
  Culture="Culture"
  LicenseAgreement="license.txt"
>

  <PackageFiles>
    <PackageFile Name="license.txt"/>
  </PackageFiles>

  <!-- Defines a localizable string table for error messages and url's  -->
  <Strings>
    <String Name="DisplayName">Microsoft Access database engine 2010 (x86, x64)</String>
    <String Name="Culture">en</String>
    <String Name="DotNetFxRequired">Installation of Microsoft Access database engine 2010 requires Microsoft .NET Framework 2.0. Contact your application vendor.</String>
    <String Name="InvalidPlatformWin9x">Installation of Microsoft Access database engine 2010 is not supported on Windows 95. Contact your application vendor.</String>
    <String Name="InvalidPlatformWinNT">Installation of Microsoft Access database engine 2010 is not supported on Windows NT 4.0. Contact your application vendor.</String>
    <String Name="GeneralFailure">A fatal error occurred during the installation of Microsoft Access database engine 2010.</String>
    <String Name="AdminRequired">You do not have the permissions required to install this application.  Please contact your administrator.</String>
  </Strings>

</Package>

license.txt

For detail please Log on http://www.microsoft.com/en-us/download/details.aspx?id=13255

注:Windows 7 x86マシンで既にテスト済みであり、完全に機能します。すでにインストールされている場合は再インストールされません。x64マシンを持っていないので、その製品コードがわかりません。しかし、私はそれもうまくいくと確信しています。また、このパッケージをWebサイトからダウンロードし、テストしました。

さらにヘルプが必要な場合、またはBootstrapper Packageを完成させる必要がある場合は、お知らせください。

乾杯。

于 2013-11-06T05:41:26.730 に答える
4

移行すると、 Microsoft Access DatabaseEngine2010再頒布可能パッケージを使用できるようになります。

--更新-
カスタム前提条件を追加するには、ブートストラッパーパッケージを作成する必要があります。ここにいくつかの手順があります。 ブートストラッパーパッケージの作成
Bootstrapperマニフェストジェネレーターを使用したカスタムメイドのVisualStudio前提条件の展開

--アップデート
2--64ビット実装については、以下のMassoodKhaariからのコメントを参照してください。

于 2012-12-13T07:24:43.820 に答える