visual stutio 2005 打包部署(下)

10.      最後還要保證咱們項目運行所必須的環境 (.Net Framework )
右鍵單擊安裝項目的項目名 , 進入屬性
 
點擊系統必備
 
 
11.      DBClassLiabrary 類庫的 MyInstaller.cs 文件中編寫安裝數據庫的代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Data.SqlClient;
using Microsoft.Win32;
 
namespace DBAction
{
    [RunInstaller(true)]
    public partial class MyInstaller : Installer
    {
        public MyInstaller()
        {
            InitializeComponent();
        }
 
        private void ExecuteSql(string connString, string DBName, string sqlString)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand comm = new SqlCommand(sqlString, conn);
 
            try
            {
                conn.Open();
                conn.ChangeDatabase(DBName);//更改當前數據庫
                comm.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }
       
        //重寫Install方法
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
            try
            {
                //建立數據庫
                string connStr = string.Format("data source={0}; user id={1}; password={2}; persist security info = false; packet size=4096",
                    this.Context.Parameters["server"], this.Context.Parameters["User"],
                    this.Context.Parameters["pwd"]);
 
                ExecuteSql(connStr, "master", "create database " + this.Context.Parameters["dbname"]);
 
                //建立一個進程用來執行sql腳本---建表
                System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
 
                //設置該進程要啓動的文檔是"osql.exe",這個執行文件用來在命令行執行sql腳本文件
                sqlProcess.StartInfo.FileName = "osql.exe";
 
                //配置進程須要的參數
                //Context.Parameters--獲取在運行InstallUtil.exe時輸入的命令行參數
                sqlProcess.StartInfo.Arguments = string.Format("-U {0} -P {1} -i {2}bankDB.sql",
                    this.Context.Parameters["user"], this.Context.Parameters["pwd"],
                    this.Context.Parameters["targetdir"]);
 
                sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
        }
 
        ///   <summary>
        ///   重載OnBeforeInstall,肯定是否安裝.NETFramework
        ///   </summary>
        protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
        {
            base.OnBeforeInstall(savedState);
            try
            {
                Microsoft.Win32.RegistryKey key;//定義註冊表鍵
                //讀取相同位置上的信息,若key爲空,則不存在此鍵值,則進行安裝;相反爲存在則不安裝
                key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework", true);
                if (key == null)
                {
                    Process.Start(Context.Parameters["targetdir"].ToString() + @" dotnetfx \dotnetfx.exe");//獲得安裝後文件的路徑,並經過路徑和文件名來啓動
                }
            }
            catch (Exception e)//抓取錯誤信息,並給予提示
            {
                MessageBox.Show("安裝程序錯誤!錯誤提示:" + e.Message);
            }
        }
    }
}
提示:
*  bankDB.sql 腳本文件中最好加上 USE bankDB GO , 爲了使安裝程序程序可以正確運行,必須確保你的 bankDB.sql 腳本文件準確無誤,檢查方法就是在命令行中輸入: C:> osql –U sa –P 123 –i D:\ 打包示例 \bankDB.sql 若是在你本身的機器上能生成數據庫 bankDB ,就說明 sql 腳本沒錯
 
12.      整個解決方案所有完成後,請分別生成 3 個項目的執行文件,確保獲得最新結果。其中在 MyProjSetup Debug 文件夾中的就是咱們須要的結果
咱們雙擊 setup.exe 或者 MyProjSetup.msi 以後 , 就可以在目標計算機上安裝 bank 數據庫和咱們本身的 MyProjectV2 的執行文件了
 
個人目標文件選擇的是 D:\SetupDemo ,最後在該文件夾下的文件以下:
 
能夠看到在目標機器上的目標路徑下包含了項目所須要的各個類庫、文件等等,以及本身的執行文件
 
 
/dbname=[EDITA1]  /server=[EDITA2] /user = [EDITA3]  /pwd = [EDITA4] /targetdir="[TARGETDIR]\"  ------- 錯誤
 
/dbname=[EDITA1]  /server=[EDITA2]  /user=[EDITA3]  /pwd=[EDITA4] /targetdir="[TARGETDIR]\"  ------- 正確
切記切記:/key=[value] 之間絕對不能有空格
最後須要在目標機器上安裝 .net framework. 另外 app.Config 配置文件也能夠打包,並且在打包後會自動出如今目標機器的目標文件夾,所以並不存在打包後沒法修改配置文件的狀況。
<appSettings>
<add key=」connStr」value=」………」>
</ appSettings >
注意須要添加引用 System.Configration
 
 
點擊系統必備
選擇你須要的組件 , .Net Framework2.0 和水晶報表組件等
相關文章
相關標籤/搜索