.NETパッケージには、データベースを自動的にインストールされます!

A)展開プロジェクトを作成します。
「ファイル」メニュー1.「アイテムを追加」してから選択するポイント「新規プロジェクト」。
「新しいプロジェクトの追加」ダイアログ・ボックスで、「プロジェクトの種類」ペインの「セットアップと展開プロジェクト」を選択し、「テンプレート」ペインを選択し、「インストールプログラムを。」「名前」ボックスに、型SETUP1。
3.ダイアログボックスを閉じるには、「OK」をクリックします。
4.プロジェクトがソリューションエクスプローラに追加され、ファイルシステムエディタが開きます。
「プロパティ」ウィンドウで5. [商品プロパティ]を選択し、情報管理体制を入力します。



B)メインの展開プロジェクトにプロジェクト出力を追加します。
「ファイルシステムエディタ」では1は、「アプリケーションフォルダ」を選択します。「操作」メニューでは、ポイント選択し、「追加」するための「プロジェクト出力。」
「追加プロジェクト出力グループ」ダイアログ・ボックスで、「プロジェクト」リスト「あなたのプログラム」のドロップダウンを選択します。
3.ダイアログボックスを閉じるには、「OK」をクリックします。
4.リストから「メイン出力」と「コンテンツファイル」グループを選択し、「OK」をクリックします。
 
C)インストーラクラスを作成します
「ファイル」メニュー、ポイントに「新しい」とし、選択1.「プロジェクト。」
「新規プロジェクト」ダイアログ・ボックスで、中に「テンプレート」ペインを選択し、「プロジェクトの種類」ペイン「のVisual Basicプロジェクト」を選択し、「ライブラリー。」「名前」ボックスで、installDBを入力します。
3.ダイアログボックスを閉じるには、「開く」をクリックしてください。
4.「プロジェクト」メニューから「新規アイテムを追加」を選択します。
5.「セットアップクラスは、」「新しい項目」ダイアログ・ボックスを追加します。「名前」ボックスで、installDBを入力します。
6.ダイアログボックスを閉じるには、「OK」をクリックします。
7.詳細コードが取り付けられています。
 
D)カスタムセットアップダイアログボックスを作成します。
1. [ソリューションエクスプローラで「SETUP1」プロジェクト。「表示」メニューのポイント「エディタ」で、次に「ユーザーインターフェース」を選択します。
2.ユーザーインターフェイスエディタは、下のノードを「開始」「インストール。」「操作」メニューでは、「ダイアログの追加」を選択します。
、ボックス「ダイアログを追加」、「使用許諾契約」ダイアログ・ボックスを選択し、ダイアログボックスを閉じるには、「OK」をクリックします3.。
4.「テキストボックス(A)」ダイアログ・ボックスを選択し、ダイアログボックスを閉じるには、「OK」をクリックし、ダイアログボックスで「ダイアログを追加します」。
「操作」メニュー5.選択「に移動します。」「テキストボックス(A)」ダイアログノードで「インストールフォルダ」まで、この手順を繰り返します。
「プロパティ」ウィンドウ6.、プロパティを選択し、BannerTextを入力します。データベースをインストールしてください。
7. bodyText当該プロパティとタイプを選択します。インストーラは、ターゲットマシン上でデータベースをインストールします
8. [Edit1Labelプロパティとタイプ:データベース名:
9. [Edit1PropertyプロパティとタイプCUSTOMTEXTA1
10. [Edit1Valueプロパティやタイプ:dbservers
11. [Edit2Labelプロパティと種類:サーバー名:
12. [Edit2PropertyプロパティとタイプCUSTOMTEXTA2
13. [Edit2Valueプロパティとタイプ:(ローカル)
14. [Edit3Labelプロパティとタイプ:ユーザ名:
15. [Edit3Valueプロパティやタイプ:SA
16. [Edit3PropertyプロパティとタイプCUSTOMTEXTA3
17. Edit4Labelプロパティやタイプ:パスワード:
18.選択Edit4PropertyプロパティとタイプCUSTOMTEXTA4
19.選択Edit2Visible、Edit3VisibleとEdit4Visible財産、そしてtrueにそれらを設定します
 
E)カスタムアクションを作成します
1. [ソリューションエクスプローラで「SETUP1」プロジェクト。「表示」メニューのポイント「エディタ」で、次に「カスタムアクション」を選択します。
2.「インストール」ノードのカスタムアクションエディタを選択します。「操作」メニューで、「カスタムアクションの追加」を選択します。
「プロジェクト内の項目を選択」ダイアログボックスで、ダブルクリックします3.「アプリケーションフォルダ。」
4.「installDB(活動)からのプライマリ出力」を選択し、ダイアログボックスを閉じるには、「OK」をクリックします。
"プロパティ" ウィンドウ5.、CustomActionDataプロパティと種類を選択し、 "/ DBNAME = [CUSTOMTEXTA1] /サーバー= [CUSTOMTEXTA2] /ユーザー= [CUSTOMTEXTA3] / PWD = [CUSTOMTEXTA4] / TARGETDIR =" [TARGETDIR] \ ""。
 
附属書:/ TARGETDIR =「[TARGETDIR] \」installDBクラスのインストール後にパスを得るために、私たちは、このパラメータを設定している、インストール後にターゲットパスです。
 
六)は、アンインストール機能のパッケージに参加しました:
方法の一つ:
1.追加のファイルは、パッケージングプロジェクトにMSIEXEC.EXE(一般的にはC:\ Windowsはsystem32に\の下の\見つける。)
2.上のファイル・システム・ビューでアプリケーションフォルダを選択し、右クリックします。msiexec.exeを選択しますショートカットを作成して、ショートカットの名前を変更する「アンインストール」を
3.変化の引数は、「/ X {商品ID}」のためのProductCodeプロパティ値ID値製品の包装プロジェクトをショートカット。
方法二:(推奨)
インストールパッケージへの1氏は、製品コード(ソリューションエクスプローラに注意して、以下の使用、)SETUP1としてルートディレクトリを選択し、ラベル、ではない財産権のプロパティを表示
2. VS.netを新しいコンソールアプリケーションUNINST.EXEファイルの確立
「による電力:landlordh
」2000、XP、2003
モジュールのアンインストール
    をSub Main()
        の薄暗いmyProcessプロセス=新しいプロセスとして
        もしSystem.Environment.OSVersion.ToString.IndexOf(「NT 5 ")そして
            myProcess.Start(" msiexecの"" / {X-2B65D4A9-C146-4808-AB4B-321FB0779559}「)「製品コードを所有する
        場合は終了
        myProcess.Close()
    End Subの
エンドModule1の
3.コンソールプログラムEXEファイルBINディレクトリには、プログラムグループのUNINST.EXEにショートカットを作成し、パッケージのプログラムファイルに追加されます
 
installdb.vbクラス、参照system.configuration.install.dllを追加します。
システムを使用しました。
System.Collectionsを使用しました。
System.ComponentModelを使用しました。
System.Configuration.Installを使用しました。
するSystem.Reflectionを使用しました。
System.IOを使用しました。
System.Dataを使用しました。
System.Data.SqlClientを使用します。
インストールの名前空間
{
 /// <要約>
 /// Installer1要約。
 /// </要約>
 [をrunInstaller(真の)]
 publicクラスInstaller1:System.Configuration.Install.Installer
 {
  /// <まとめ>
  ///必要な設計変数。
  /// </要約>
  プライベートSystem.ComponentModel.Containerコンポーネント= NULL;
  Installer1公開は()
  {
   //この呼び出しは、設計者が必要とされます。
   InitializeComponent();
   // TODO:InitializeComponentの呼び出しの後に任意の初期化を追加
  }
  /// <要約>
  ///は、使用しているすべてのリソースをクリーンアップします。
  /// </要約>
  ボイド保護オーバーライド廃棄(BOOL処分)
  {
   IF(配置)
   {
    IF(コンポーネント= NULL!)
    {
     あるcomponents.Dispose();
    }
   }
   base.Dispose(配置);
  }

  #regionコンポーネントデザイナは、コード生成
  /// <まとめ>
  変更するために、コード・エディタを使用していない- ///所望の設計支援方法
  ///このメソッドの内容を。
  /// </要約>
  プライベートボイドのInitializeComponent()
  {
   コンポーネントSystem.ComponentModel.Container新しい新=();
  }
  #endregion
  プライベート文字列GetSql(列名) 
  { 
// //调用osqlを执行脚本
//
// System.Diagnostics.Process sqlProcess =新しいSystem.Diagnostics.Process();
//
// sqlProcess.StartInfo.FileName = "OSQL.EXE"。
//
// sqlProcess.StartInfo.Arguments = String.Formatの( "-U {0} -P {1} -d {2} -i {3} db.sql"、this.Context.Parameters [ "ユーザ"] 、this.Context.Parameters [ "PWD"]、 "マスター"、this.Context.Parameters [ "TARGETDIR"])。
//
// sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden。
//
// sqlProcess.Start();
//
// sqlProcess.WaitForExit(); //等待执行
//
// sqlProcess.Close();


//アセンブリASM = Assembly.GetExecutingAssembly();
// System.IO.FileInfoのFileInfo =新しいSystem.IO.FileInfo(Asm.Location)。
//文字列の
パス= FileInfo.DirectoryName + @ "\" +名
    文字列パス= this.Context.Parameters [ "TARGETDIR"] +名。
    FileStreamをFS =新しいFileStreamを(パス、FileMode.Open、FileAccess.Read、FileShare.Read)。
    StreamReaderをリーダー=新しいStreamReaderを(FS、System.Text.Encoding.Default)。 
    //System.Text.Encoding.ASCII;
    reader.ReadToEndを返します(); 
   } 
   キャッチ(例外例) 
   { 
    Console.Write( "GetSqlにおいて:" + ex.Message)。 
    EXを投げます。 
   } 
  } 
  プライベートのボイドは、ExecuteSQL(文字列DatabaseNameを、文字列のSQL) 
  {
   SqlConnectionのsqlConnection1 =新しいSqlConnectionオブジェクト();
   sqlConnection1.ConnectionString = String.Formatの( "サーバ= {0};ユーザID = {1};パスワード= {2};データベース=マスター"、this.Context.Parameters [ "サーバ"]、this.Context.Parameters [ "ユーザ"]、this.Context.Parameters [ "PWD"])。
   System.Data.SqlClient.SqlCommandコマンド=新しいSystem.Data.SqlClient.SqlCommand(SQL、sqlConnection1)。 
   試す 
   {
    Command.Connection.Open()。 
    Command.Connection.ChangeDatabase(DataBaseNameの)。 
   
    Command.ExecuteNonQuery(); 
   } 
   キャッチ(例外例) 
   { 
    Console.Write( "例外ハンドラにおいて:" + ex.Message)。 

   最後に 
   { 
    Command.Connection.Close()。 
   } 
  } 

  保護された無効AddDBTable(文字列strDBName) 
  { 
   しようと 
   {      
    (+ strDBName "CREATE DATABASEの"、 "マスター")は、ExecuteSQL。
    ExecuteSQL(strDBName、GetSql( "sql.txt")); 
    ExecuteSQL( "マスター"、 "EXEC sp_addloginを'myoamaster'、 'myoamaster'、 ' "+ strDBName +"'、NULL、NULL")。
    ExecuteSQL(strDBName、 "EXEC sp_grantdbaccessストアドプロシージャ'myoamaster'、 'myoamaster'");
    ExecuteSQL(strDBName、 "EXEC sp_addrolemember 'のdb_owner'、 'myoamaster'");
   } 
   キャッチ(例外例) 
   { 
    Console.Write( "例外ハンドラにおいて:" + ex.Message)。 
   } 
  } 
  パブリックオーバーライドボイドインストール(System.Collections.IDictionary stateSaver) 
  { 
   base.Install(stateSaver)。 
   AddDBTable(this.Context.Parameters [ "DBNAME"])。 
  } 
 }
}
 
ここでsql.txtは、もちろん、あなたが実際には、同じである、SQLスクリプトを実行します。osql呼び出すことができ、データベースのSQLスクリプトがあります。
ファイルがミックスに追加sql.txtしなければならない梱包すると、それが実行されないでしょう。
 
次のプログラムでのMDF LDFファイルとデータベースファイルを添付したい場合:
プライベートボイドCreateDataBase(ストリングSTRSQL、ストリングDataName、ストリングstrMdf、列strLdf)
  {
   文字列str。
   SqlConnectionのmyConn =新しいSqlConnectionオブジェクト(STRSQL)。
   // EXEC指定@dbname = 'BX_FreightMileage_2' // 最初のデータベースを分離する必要が
   STR = "EXEC sp_attach_dbの@dbname = ' " + DataName + " ' @ファイル名1 ='" + strMdf + " ' @ファイル名2 ='" + strLdf + "「";
   =新しい新しいmyCommand SqlCommandオブジェクトSqlCommandオブジェクト(STR、myConn);
   
    myConn.Open();
    myCommand.ExecuteNonQuery();
    myConn.Close();
   
  }
もちろん、これら2つのデータベースファイルがミックスに追加するときにもパッケージ化。

ます。https://www.cnblogs.com/zhangchenliang/archive/2007/05/06/736721.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33895516/article/details/93495929