C#安裝程序中打包MSDE的八個步驟
在Visual Studio 2003的工程中添加Microsoft SQL Server 2000 Desktop Engine (MSDE)的自動安裝合并模塊MSM:
1.下載MSDE2000的sp3a安裝包。
2.解壓到本地硬盤,其中的MSM文件夾中的東東就是MSDE2000合并模塊。
3.在你的工程中添加一個安裝工程假設為MySetup,按照正常的步驟添加工程輸出(Project Output),選擇輸出文件(primary output)和內容文件(content files)兩項。
4.添加合并模塊(Merge Moudle),選擇瀏覽,指定到你的MSDE的MSM文件夾,選擇MSM(不包括msm1033和msm2052)下的所有的文件(REPL.MSM、REPL_RES.MSM、 DMO_RES.MSM和DMO.MSM可以不選),打開。
5.設置安裝工程的屬性(Properties)中的SearchPath,指定為你的MSM所在路徑(MSM和MSM1033和MSM2052)。
6.設置好安裝程序的其他屬性,這時就可以對你的安裝工程進行編譯了。
7.我們需要修改打好的安裝包,使它可以在安裝完程序后自動安裝MSDE的一個實例(假設實例名為:MyServer)。我們需要用到MS的一個工具ORCA
8.用ORCA打開安裝包文件MySetup.msi
InstallExecuteSequence表
GetSqlStates.XXXXXX 103->421
InstallInitialize 1800->1799
RemoveExistingProducts 1825->1800
InstallUISequence表
GetSqlStates.XXXXXX 103->421
Property表添加
SqlInstanceName: MSDEDH實例服務名
SqlSecurityMode: SQL 用SQL模式登錄
SqlSaPwd: sa的密碼
DISABLENETWORKPROTOCOLS=0:網絡訪問的話也要加這項
重寫C#安裝程序Installer
下面方法適用于C#安裝程序,沒有添加SqlInstanceName:這個屬性,用機器名訪問msde
- public override void Commit(IDictionary savedState)
- {
- base.Commit (savedState);
- //啟動windows服務
- new System.ServiceProcess.ServiceController("MSSQLSERVER").Start();
- //附加數據庫
- SqlConnection Connection = new SqlConnection("password=**;user id=sa;data source="+SystemInformation.ComputerName);
- SqlCommand Cmd = new SqlCommand("sp_attach_db",Connection);
- Cmd.CommandType = CommandType.StoredProcedure;
- SqlParameter loginname=Cmd.Parameters.Add("@dbname",SqlDbType.NVarChar,20);
- loginname.value ="yourname";
- SqlParameter nickname=Cmd.Parameters.Add("@filename1",SqlDbType.NVarChar,50);
- nickname.value =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"yourname.mdf";
- SqlParameter password=Cmd.Parameters.Add("@filename2",SqlDbType.NVarChar,50);
- password.value =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"yourname.ldf";
- Connection.Open();
- Cmd.ExecuteNonQuery();
- Connection.Close();
- }
用附加數據庫,我認為是***的解決辦法。
在沒有SQL環境的機器上運行你的C#安裝程序,會自動安裝MSDE,并附加你的數據庫,重起機器后,自動啟動Sql Server的實例。
【編輯推薦】