打包时将.Net和SqlSever一起打包,只要最小的部分,能够运行我的程序即可,安装时不需用户选择可选项,默认安装就行了。

解决方案 »

  1.   

    问过很多遍了
    [转]
    步骤: 
    1、添加一个新项目->选择类库模板->命名为DBCustomAction 
    2、单击项目右键->添加新项->选择安装程序类(命名为DBCustomAction.cs) 
    3、在服务器资源管理器中添加->连接到数据库->指定用户密码(选择允许保存密码)->数据库选择master 
    4、切换到DBCustomAction.cs的视图状态->将服务器资源管理器数据库连接中的master.dbo拖动到designer中 
    5、添加一个新项sql.txt(注意要使用小写),输入下列sql代码 
    CREATE TABLE [dbo].[MK_Employees] ( 
    [Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , 
    [Rsvp] [int] NULL , 
    [Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL  
    ) ON [PRIMARY]; ALTER TABLE [dbo].[MK_Employees] WITH NOCHECK ADD  
    CONSTRAINT [PK_MK_Employees] PRIMARY KEY CLUSTERED  

    [Name] 
    ) ON [PRIMARY]; 
    (P.S:也可以直接用SqlServer导出) 6、在sql.txt的右键属性中->生成操作->嵌入的资源 
    7、将DBCustomAction.cs切换到代码视图,添加下列代码 
    private  string GetSql(string Name) 
          { 
             try 
             { 
                Assembly Asm = Assembly.GetExecutingAssembly(); 
                Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "."+Name); 
                StreamReader reader = new StreamReader(strm); 
                return reader.ReadToEnd(); 
             } 
             catch (Exception ex) 
             { 
                Console.Write("In GetSql:"+ex.Message); 
                throw ex; 
             } 
          }       private void ExecuteSql(string DataBaseName,string Sql) 
          { 
             System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);          Command.Connection.Open(); 
             Command.Connection.ChangeDatabase(DataBaseName); 
             try 
             { 
                Command.ExecuteNonQuery(); 
             } 
             finally 
             { 
                Command.Connection.Close(); 
             } 
          } 
          protected void AddDBTable(string strDBName) 
          { 
             try 
             { 
                ExecuteSql("master","CREATE DATABASE "+ strDBName); 
                ExecuteSql(strDBName,GetSql("sql.txt")); 
             } 
             catch(Exception ex) 
             { 
                   Console.Write("In exception handler :"+ex.Message); 
             } 
          }       public override void Install(System.Collections.IDictionary stateSaver) 
          { 
              base.Install(stateSaver); 
                 AddDBTable(this.Context.Parameters["dbname"]); 
          } 
    8、再添加一个新项目,(选择添加到解决方案中)->项目类型为安装项目->命名为DBCustomAction Installer 
    9、选择应用程序文件夹->添加->项目输出->主输出 
    10、在方案资源管理器中->右键安装项目(DBCustomAction Installer)->视图->用户界面 
    11、选中启动结点->添加对话框->文本A 
    12、选动文本框A->右键->上移一直到最顶端 
    13、选择文本框A属性->修改BannerText,(Specify Database Name) 
    14、修改BodyText(This dialog allows you to specify the name of the database to be created on the database server. ) 
    15、修改EditLabel1(Name of DB),修改Edit1Porperty(CUSTOMTEXTA1),将其他Edit2,3,4的Edit(2,3,4)Visible属性设为false; 
    16、在方案资源管理器中->右键安装项目(DBCustomAction Installer)->视图->自定义操作 
    17、选中安装结点->添加->双击应用程序文件夹->主输出来自DBCustomAction(活动)->右键属性->CustomActiveData属性修改为/dbname=[CUSTOMTEXTA1] 
    18、编译生成,OK! 注:此文章主要来自于MSDN,本来代码使用vb.net,我用C#改写了一下,完整URL请参考 
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxwlkWalkthroughUsingCustomActionToCreateDatabaseDuringInstallation.asp ;
    另外没有接受客户数据库服务Server-Name和Password的对话框,我想既然可以接受DBNAME参数,那么接收Server-Name和Password应该也不难.
      

  2.   

    不对呀,只安装了一个表,目标机器上可没安装.net和SqlSever啊,master不用建吗?
    有个文件dotnetfxredist_x86.msm,但是说不能用于合并模块,不能重新发布.Net。真搞不懂啊
      

  3.   

    好像有些exe文件可以加进来,不过没找到一样的版本,不知道可不可以
      

  4.   

    没有了 CSDN上有类似铁,自个儿找一下吗
      

  5.   

    只能说楼主太牛了
    竟然能将sqlserver打包。
    你要知道sqlserver是微软用来卖钱的
    都被你这么打包机安装了,别人还怎么赚钱啊
      

  6.   

    关注!我想楼主的问题是要把sqlserver的库自动安装并设置好吧!
      

  7.   

    To  wq_sc(陶强):
    就是这样,手上有个别人做好的程序,是军转干的信息录入程序,它就能自动安装所有需要的设置,包括sqlserver、IE6.0、.net必需的环境,可惜没有源代码,看不懂究竟是哪一部分安装sqlserver,而我的设置必然有些不同,不可能先安它的程序再安我的。
      

  8.   

    MSDE嘛~~~~Microsoft SQLServer Desktop Engine~~~~~~这个东西简直可以强大到好像正式的SQLServer一样~~[一般够用的了]而且又好像Access那么方便
    可移动性
    而且连接方式跟平常的SQLServer一模一样的~~~
    限制为
    最多16个数据库
    最多支持1个处理器
    最多支持2G数据库~~~
    有很多软件
    好像一些卡拉OK点播系统就是用他~~~~
    而且还有很大的优势就是
    完全免费
    而且资源占用少
    想管理的话只要安装MS SQLServer仅连接工具包就可以
      

  9.   

    To chrisliang() ;
    Microsoft SQLServer Desktop Engine是用哪一个文件,我没找到,另外找到的SQLServer2005不能在win2000上安装。麻烦帮我找一下。SQLServer只能装2G数据吗,好像小了一点,有没有办法弄大一些?
      

  10.   

    看来好象只能把sqlserver要用到的文件都拷贝过去,然后挨个注册要用到的组件
      

  11.   

    可以在微软的网站上独立下载
    因为是一个免费的版本的SQL所以最多只能2G数据库这个只是一个数据组件
    没有任何的管理功能要管理的话你可以在别的电脑上用查询分析器对这台电脑的数据库进行管理
    或者只安装一个SQL仅客户端就可以轻松管理2G数据其实已经很大的了如果设计媒体文件的话
    可以用媒体文件保存为文件性质
    然后SQL里面只存放路径
    那就简单了这个是SQL桌面引擎至于如何加载请参考最新的联机文档或者MSDN
    里面都有
      

  12.   

    可以的看看这个帖子
    http://blog.csdn.net/lihonggen0/archive/2004/05/17/13654.aspx
    不懂的地方在联系我!