C#程式打包(包括資料庫安裝)

NO IMAGE

C#的c/s的winform,資料庫為sql2k,
應用程式包括如下檔案:
1.exe,1.dll,1.jpg,1.xml,donetsetup.exe以及資料庫檔案1.mdf,1.ldf(或資料庫安裝檔案1.sql)。
打包要求:
(1)自動檢測是否安裝donet環境,如沒安裝,則提示自動安裝。
(2)安裝時自動安裝資料庫(附加mdf或執行1.sql)。
(3)在安裝介面上能自定義一些安裝圖片或提示。

安裝專案:
六個子項:檔案系統、登錄檔、檔案型別、使用者介面、自定義操作、啟動條件。
其中我們在打包過程中經常要用到的有檔案系統、登錄檔、使用者介面和自定義操作。
檔案系統:嚮應用程式資料夾、使用者的程式選單、使用者桌面下輸出專案檔案(四種型別:資料夾、專案輸出、檔案和程式集),還可以建立快捷方式(一般是放在桌面或程式選單中)檔案系統編輯器表示目標計算機上的檔案系統,使用該工具可以指定應用程式檔案安裝的位置。在大多數情況下,希望將應用程式檔案放在 Application Folder 中或在 Application Folder 下建立的子資料夾中。安裝在目標計算機上以後,來自 Application Folder 的檔案將位於 Program Files\Manufacturer\ProductName資料夾中,其中
Manufacturer 是安裝 Visual Studio 時使用的公司名,而 ProductName 是用於部署專案的名稱。可以在安裝專案的屬性視窗中重寫這兩個設定。
登錄檔:可以向登錄檔中插入鍵,在安裝應用程式的同時建立登錄檔項。
使用者介面:系統自動提供一組在安裝期間顯示的預設對話方塊。根據正在構建的專案的型別,所提供的這組對話方塊有所不同。使用使用者介面編輯器,可以將對話方塊重新排序或刪除對話方塊。在編輯器中顯示的對話方塊樹包含兩部分:安裝與管理員安裝。安裝部分包括終端使用者執行安裝程式時顯示的對話方塊,而管理員安裝部分包含系統管理員將安裝程式上傳到某個網路位置時顯示的對話方塊。如果想構建一個沒有使用者介面的安裝,只需在對話方塊樹上刪除安裝部分中的所有對話方塊。或者,可以從一組可用的模板將對話方塊新增到安裝專案中。
啟動條件:使用啟動條件編輯器來定義成功執行安裝所必須滿足的條件。例如,可以檢查特定版本的作業系統。如果使用者嘗試在一個不滿足條件的系統上安裝,安裝將中止。還可以配置啟動條件來搜尋目標計算機上的某個特定檔案、登錄檔項或元件。在開始安裝時,Windows Installer 執行搜尋和條件評估,並按啟動條件編輯器中所示的順序執行。
自定義操作:自定義操作提供了一種在安裝結束時執行任務的機制。例如,您可能希望在安裝應用程式之前先配置好資料庫,此時您可以用自定義操作來完成資料庫的建立。自定義操作構建為單獨的 .dll 或 .exe 檔案,然後使用自定義操作編輯器新增到專案中,其中這些操作與不同的安裝階段有關。自定義操作編輯器包括幾個單獨的資料夾,用於放置執行 Install、Commit、Rollback 或 Uninstall 任務的二進位制檔案。
InstallerClass屬性:如果新增的自定義操作是繼承自Installer類(注意放在哪個資料夾下就要過載哪個相應的方法),該屬性設為True,否則該屬性設為False(注意:為False時要指定.dll檔案的入口——EntryPoint屬性)。
解除安裝:可以在安裝應用程式中提供一個解除安裝的快捷方式,藉助於系統提供的解除安裝程式msiexec.exe(在c:\windows\system32目錄下),並把安裝程式專案的ProductCode屬性值賦給快捷方式的Arguments屬性(注意:在屬性值前加/x)
安裝程式類:System.Configuration.Install名稱空間下
Installer類有四個可以過載的方法,分別是Install,Commit,Rollback,Uninstall。
分別對應於自定義操作中的四個資料夾:安裝、提交、回滾、解除安裝。
資料庫安裝:
1、 附加資料庫
2、 執行建立資料庫的Sql語句
3、 完全備份的資料庫檔案還原
可以將能生成資料庫的的檔案(分離的資料庫檔案、Sql指令碼檔案或完全備份檔案)部署到應用程式資料夾下,然後在過載的Install方法里加入生成資料庫程式碼(注意:生成資料庫的程式碼應該在呼叫基類的Install方法後)。
資料庫的解除安裝:首先刪除資料庫,再呼叫基類的Uninstall方法刪除應用程式資料夾裡的檔案(順序不能亂)。
幾個特殊點:
1、檔案系統中的AlawaysCreate屬性:本屬性可以指定為False,然後Condition屬性為空時相當於AlawaysCreate屬性為True(Transitive屬性必須為True才計算Condition屬性的值)。Condition 屬性可用於向安裝程式新增條件邏輯,例如,僅為特定的作業系統版本安裝某個檔案。它還可以與檔案搜尋、登錄檔搜尋或元件搜尋一起使用,以在找不到指定項時使安裝過程終止。可以是 Windows Installer 條件或屬性,Property 屬性中包含的值,檔案、登錄檔或元件搜尋中的
Name 屬性,也可以是使用邏輯運算子的上述語句的組合。
2、 建立快捷方式(在程式中建立,可以有作為附加任務,根據使用者的選擇情況,有選擇的建立):
新增引用:COM 選項卡並選擇 Windows Script Host Object Model
建立物件:建立一個 WshShell 的例項物件,接著通過該物件的 CreateShortcut 方法來建立 IWshShortcut 介面的例項物件,傳遞給 CreateShortcut 方法的引數是將要建立的快捷方式的完整路徑(包括該快捷方式的名字)。
設定屬性:TargetPath、WorkingDirectory、WindowStyle、Description、IconLocation
生成快捷方式:呼叫 IWshShortcut.Save 方法生成快捷方式檔案。