none
如何將AccessDatabaseEngine.exe加入必要條件部署 RRS feed

解答

所有回覆

  • HI,

     

    您可以參考這一份文件:

    http://msdn.microsoft.com/en-us/library/aa730839(VS.80).aspx

     

    tihs

    2008年10月5日 上午 06:46
  • 謝謝您的幫忙...

    花了好多時間終於研究出來我需要的部署方式,

    分享給其他需要的朋友也請其他更有經驗的朋友指導一下是否有更好的方法,

     

    我的專案中有用到access2007 所以環境中必須加裝AccessDatabaseEngine.exe
    另外還會出現gac缺少組件 adodb.dll, stdole.dll的問題,
    我建立另一個Windows Installer 專案

    增加gac資料夾放入我需要安裝的dll,

    封裝成DllSetup.msi,

     

    之後在必要條件的資料夾中,

    這篇文章是寫在下面的路徑,

    因為我安裝vs時有變更路徑所以我的所在路徑不太一樣,

    http://msdn.microsoft.com/zh-tw/library/ms165429(VS.80).aspx

    \Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper

    在這個資料夾中加入一個新的資料夾 "AccessDatabaseEngine",

    1.將上面的AccessDatabaseEngine.exe及自己做的DllSetup.msi放入,

     

    2.再加入產品product.xml檔,此檔案我有使用Bootstrapper Manifest Generator 來幫助撰寫

    http://code.msdn.microsoft.com/bmg/Release/ProjectReleases.aspx?ReleaseId=1569

    ===========================================================================

    <?xml version="1.0" encoding="utf-8"?>
    <Product ProductCode="Microsoft.Office.Access.Database.Engine.2007" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="accessdatabaseengine.exe" HomeSite="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&amp;FamilyID=7554f536-8c28-4598-9b72-ef94e038c891" PublicKey="3082010A0282010100CD819638AE5CA2F2C1DFDED0AB958DD63C9D1F8BC35D862E5DF0B172F5ABAC886AB5DAB1227B0BC8C8A54B915E2213E9F9F5239DB5F46E76AEEFEEA43CC7C4C0595C3FABB3733326A662816179A162F46E8895D06EDDC79FD2A451117661BA708A65A1961689A75D81D04466E5DB569E40CAFCDC76242E443000E5D67D7B9511D5581DA3E84F0BC988DCA2D653996CCA63CA996A9A925E4C4D11E82FD35B5B5E5F52A3732DA5BB84450D8C191576CB08DA9AA67015E84DEC69FD5DB26B8FED295137388BC6464915945098B0F468A4D7DE097167749E778C1D856B97EAE75F45CCE0E6710DD16300937B31988E0BB413BDB3D0EEF1DF21EEA96061EE37433DC30203010001" />
        <PackageFile Name="dllsetup.msi" HomeSite="http://www.microsoft.com/downloads/details.aspx?FamilyID=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&amp;displaylang=en" />
      </PackageFiles>
      <RelatedProducts>
        <DependsOnProduct Code="Microsoft.Net.Framework.2.0" />
      </RelatedProducts>
      <InstallChecks>
        <MsiProductCheck Property="AccessDatabaseEngineExists" Product="{90120000-00D1-0404-0000-0000000FF1CE}" />
        <MsiProductCheck Property="DllSetupExists" Product="{0433D791-2622-45B2-8115-EAF6462A303C}" />
      </InstallChecks>
      <Commands Reboot="Defer">
        <Command PackageFile="accessdatabaseengine.exe" Arguments="/quiet /norestart">
          <InstallConditions>
            <BypassIf Property="AccessDatabaseEngineExists" Compare="ValueGreaterThanOrEqualTo" Value="3" />
          </InstallConditions>
        </Command>
        <Command PackageFile="dllsetup.msi" Arguments="/quiet /norestart">
          <InstallConditions>
            <BypassIf Property="DllSetupExists" Compare="ValueGreaterThanOrEqualTo" Value="3" />
          </InstallConditions>
        </Command>
      </Commands>
    </Product>

    ============================================================================

     

    3.再加入繁體資料夾zh-cht

    3-1.在此資料夾中再次放入AccessDatabaseEngine.exe及DllSetup.msi

    3-2放入版權說明檔AccessDatabaseEngineEula.rtf

    3-3放入Package.xml檔[這個檔案我沒什麼改主要改的是指定版權檔]

    ============================================================================

    <?xml version="1.0" encoding="utf-8" ?>
    <Package
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      Name="Microsoft.Office.Access.Database.Engine.2007"
      Culture="Culture"
      LicenseAgreement="AccessDatabaseEngineEula.rtf">
      <PackageFiles>
        <PackageFile Name="AccessDatabaseEngineEula.rtf"/>
      </PackageFiles>
      <Strings>
        <String Name="DisplayName">Microsoft Office Access Database Engine 2007</String>
        <String Name="Culture">zh-cht</String>
        <String Name="NotAnAdmin">You must be an administrator to install this package.</String>
        <String Name="GeneralFailure">A general error has occurred while installing this package.</String>
      </Strings>
    </Package>

    ============================================================================

     

    上面的東西加好之後就可以在必須條件中多一項Microsoft Office Access Database Engine 2007的安裝了,

    其實中間還有很多我不懂的地方,我只能不停的測試找出可以正確執行的寫法.

    希望clickonce的功能能更強一點,也希望我的一點經驗可以幫助到其他人

    2008年11月3日 上午 07:31