在Visual Studio
1.下载MSDE2000的sp3a安装包。
2.解压到本地硬盘,其中的MSM文件夹中的东东就是MSDE2000合并模块。
3.在你的工程中添加一个安装工程假设为MySetup,按照正常的步骤添加工程输出(Project
4.添加合并模块(Merge
5.设置安装工程的属性(Properties)中的SearchPath,指定为你的MSM所在路径(MSM和MSM1033和MSM2052)。
6.设置好安装程序的其他属性,这时就可以对你的安装工程进行编译了。
7.我们需要修改打好的安装包,使它可以在安装完程序后自动安装MSDE的一个实例(假设实例名为:MyServer)。我们需要用到MS的一个工具ORCA
8.用ORCA打开安装包文件MySetup.msi
InstallExecuteSequence表
GetSqlStates.XXXXXX
InstallInitialize
RemoveExistingProducts
InstallUISequence表
GetSqlStates.XXXXXX
Property表添加
SqlInstanceName:
SqlSecurityMode:
SqlSaPwd:
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=**;userid=sa;data +SystemInformation.ComputerName);source=" - 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_r(Assembly. GetExecutingAssembly_r().Location)+ "yourname.mdf"; - SqlParameter
password=Cmd.Parameters.Add( "@filename2",SqlDbType.NVarChar,50); - password.value
=Path. GetDirectoryName_r(Assembly. GetExecutingAssembly_r().Location)+ "yourname.ldf"; - Connection.Open();
- Cmd.ExecuteNonQuery();
- Connection.Close();
- }
用附加数据库,我认为是最好的解决办法。
在没有SQL环境的机器上运行你的C#安装程序,会自动安装MSDE,并附加你的数据库,重起机器后,自动启动Sql
出处:http://www.cnblogs.com/huangcong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。