比如说:整个解决方案里面有5个项目.我想打成一个安装包。在安装的时候,可以选择在这台机器上安装那个项目。(5个项目选择其中之一)。怎么打包。(就像有些软件安装的时候,可以选择是“典型安装”、“全部安装”“最小安装”)

解决方案 »

  1.   

    5个项目需要编译成5个exe文件。然后再打包!
      

  2.   

    有安装程序类的代码不?发给我一份,参考一下。谢谢。email: [email protected]
      

  3.   

    我也想看看  [email protected]
      

  4.   

    打包工具应该可以实现,楼主可以试试wise
      

  5.   

    用install shield 试试
      

  6.   

    看不舒服.NET自带的安装程序.用InstallShield打包. 上上个月学了我两个星期, 总算懂了些皮毛了
      

  7.   

    谁会InstallShield?这个打包工具能满足我说的要求吗?怎么操作。那位大侠给说说。分不够。我在增加啊。
      

  8.   

    我都是用 NSIS 打包的……
      

  9.   

    没搞过这种部分的。一般就是添加SetUp项目,再在项目中添加要装的项目。
      

  10.   

    .NET中的安装和打包程序
    1. 在创建好的项目中添加安装项目
    选择解决方案点击右键新建项目
     
    安装和部署项目安装项目
     
    2. 设置文件系统
    选择安装项目点击右键视图文件系统
     
    3. 添加需要安装的文件
    在文件系统中,选择应用程序文件夹点击右键添加项目输出
     
    选择要打包安装的项目主输出确定
     
    完成上面的步骤,安装程序将包含项目运行所需要的文件
    4. 为程序添加快捷方式和图标
    快捷方式: 选择主输出项点击右键创建主输出的快捷方式
     
    可以将快捷方式添加到”用户的程序菜单”和”用户桌面”(通过剪贴的方式移动到对应的地方)
    然后修改快捷方式的名称.
     
    为快捷方式添加图标:选择应用程序文件夹点击右键添加文件 选择要添加的图标文件
     
    选择快捷方式文件在属性面板中设置ICON属性选择图片文件
      
    浏览到安装项目中添加的图标
    5. 添加数据库文件(参见步骤4中添加图标的方式将数据库文件添加到”应用程序文件夹中”(MDF和LDF文件))
    6. 添加在安装过程中输入数据库用户名和密码的界面
    选择安装项目点击右键视图用户界面
     
    选择安装启动点击右键添加对话框文本框A
     
    将文本框A移动到安装文件夹上面
    7. 设置文本框A的属性
    选中文本框A,在属性面板中设置相关属性:
    文本框A中有4个文本框,将Edit3Visible和Edit4Visible设置为false
    再设置Edit1和Edit2的相关属性.
    注意:EditXProperty属性: 该属性表示文本框的名称,在后面的代码中我们将通过该名称来访问对应文本框中的文本内容
     
    8. 为安装程序添加自定义操作(调用安装类)
    选择安装项点击右键视图自定义操作
     
    在自定义操作中选择安装点击安装点击右键添加自定义操作
     
    选择应用程序文件夹主输出确定(因为安装类包含在主输出中)
     
    设置主输出的CustomActionData属性:
    /name=[NAME] /pwd=[PWD] /targetdir=”[TARGETDIR]\”
    /name : 在安装类中使用的别名
    [NAME] : 用户界面中添加的文本框A对应的EditXProperty属性
    /targetdir=”[TARGETDIR]\” : 安装路径9. 创建安装类
    在需要安装的项目中添加安装类
    选择项目点击右键添加添加新项安装程序类
    在安装类中重写Install方法,并在该方法中编写代码
     
    10. 点击安装项目右键重新生成.
    打包程序完成
    每次修改后都需要重新生成安装项目添加卸载程序:
    1. 在解决方案中添加一个控制台应用程序
    2. 在控制台应用程序的Main()中添加代码
     
    删除数据库时所需要的用户名和密码,可以在安装时保持到文件中,卸载时从文件中读取
    {676296FF-A972-402A-BDA9-A047D0C198EE}代码安装程序的编码,每个安装程序的编码都是不一样的,所有要选中安装项目,在属性面板的ProductCode属性中获得(注意:/X是不能少的)
    3. 将卸载项目添加到文件系统视图的”应用程序文件夹”中(参见打包的步骤3)
    4. 可以”用户的程序菜单”中为卸载程序添加快捷方式(参见打包的步骤4)
      

  11.   

    http://msdn.microsoft.com/zh-cn/library/k3bb4tfd(VS.80).aspx
    这里是讲部署的,不知道你能不能用上,可以参考一下.
      

  12.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.Data.SqlClient;namespace DBCustomAction
    {
        [RunInstaller(true)]
        public partial class DBCustomAction : Installer
        {
            public DBCustomAction()
            {
                InitializeComponent();
            }
            //建立数据库
            private void ExecuteSql(string conn,string DatabaseName,string sql)
            {
                SqlConnection mySqlConnection = new SqlConnection(conn);
                SqlCommand mySqlCommand = new SqlCommand(sql, mySqlConnection);
                mySqlCommand.Connection.Open();
                mySqlCommand.Connection.ChangeDatabase(DatabaseName);
                try
                {
                    mySqlCommand.ExecuteNonQuery();
                }
                finally
                {
                    mySqlCommand.Connection.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"]);
                    System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
                    sqlProcess.StartInfo.FileName = "osql.exe";
                    sqlProcess.StartInfo.Arguments = String.Format("-U {0} -P {1} -d {2} -i {3}YuKidb.sql", 
                        this.Context.Parameters["user"],
                        this.Context.Parameters["pwd"], 
                        this.Context.Parameters["dbname"], 
                        this.Context.Parameters["targetdir"]);
                    sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    sqlProcess.Start();
                    sqlProcess.WaitForExit();  //等待执行
                    sqlProcess.Close();
                    //删除脚本文件
                    System.IO.FileInfo sqlFileInfo = new System.IO.FileInfo(String.Format("{0}YuKidb.sql", 
                        this.Context.Parameters["targetdir"]));
                    if (sqlFileInfo.Exists)
                        sqlFileInfo.Delete();
                }
                catch(Exception ex)
                {
                    throw ex;
                }            //改写Web.Config的连接数据库字符串
                try
                {
                    System.IO.FileInfo fileInfo=new System.IO.FileInfo(this.Context.Parameters["targetdir"]+"\\Web.Config");
                    if(!fileInfo.Exists)
                        throw new InstallException("没有找到配置文件");
                    System.Xml.XmlDocument xmlDocument=new System.Xml.XmlDocument();
                    xmlDocument.Load(fileInfo.FullName);
                    foreach(System.Xml.XmlNode node in xmlDocument["configuration"].ChildNodes[0])
                    {
                        if("add"==node.Name)
                        {
                            if("ConnectionString"==node.Attributes.GetNamedItem("key").Value)
                            {
                                node.Attributes.GetNamedItem("value").Value=String.Format(
                                    "Data Source={0};Database={1};User id={2};PWD={3}",
                                    this.Context.Parameters["server"],
                                    this.Context.Parameters["dbname"],
                                    this.Context.Parameters["user"],
                                    this.Context.Parameters["pwd"]);
                            }
                        }
                    }
                    xmlDocument.Save(fileInfo.FullName);
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
        }
    }
    其他像48楼所写的,在安装项目那添加一个对话框A,安装时就在这个对话框中输入服务器名、密码、用户名、数据库名。
    我是参考这篇文章的。
    估计你的需求是添加复选框(都是微软做好了的),再在这个安装类中添加对应逻辑代码。
    当然更好的选择是其他第三方的工具。
      

  13.   

    这个估计需要专门的打包工具了!VS自带的应该不行吧!
    这个问题以前我也问过,但没满意的答案!
    http://topic.csdn.net/u/20080403/11/4195833d-c53d-4d2e-bc09-9689385da91a.html
      

  14.   


    你说的这个和我要求的不一样啊。
    我的问题是:如果我在打包时将多个EXE项目打包进去,那我怎么做才能在安装时能让用户自己选择需要装哪个项目
      

  15.   


    你说的这个和我要求的不一样啊。 
    我的问题是:如果我在打包时将多个EXE项目打包进去,那我怎么做才能在安装时能让用户自己选择需要装哪个项目
      

  16.   


    LZ可以用这个,不用安装部署,如果用安装部署,需要写一个APPLICATION的代码,然后在界面里进行复选设置.install shield方便多了
      

  17.   

    先把5个程序都编译好,然后用installsheed打包,就可以了,我原来做google sketchup 6插件的时候要有不同的要求安装我就是这么打的.
      

  18.   


    installsheed 有中文的不?怎么用啊。看了一会。里面的东西太多。不知道怎么弄。你能告诉我一下。操作步骤吗?
      

  19.   

    可以用Inno Setup 来打包
      

  20.   

    NET中的安装和打包程序 
    1. 在创建好的项目中添加安装项目 
    选择解决方案点击右键新建项目 安装和部署项目安装项目 2. 设置文件系统 
    选择安装项目点击右键视图文件系统 3. 添加需要安装的文件 
    在文件系统中,选择应用程序文件夹点击右键添加项目输出 选择要打包安装的项目主输出确定 完成上面的步骤,安装程序将包含项目运行所需要的文件 
    4. 为程序添加快捷方式和图标 
    快捷方式: 选择主输出项点击右键创建主输出的快捷方式 可以将快捷方式添加到”用户的程序菜单”和”用户桌面”(通过剪贴的方式移动到对应的地方) 
    然后修改快捷方式的名称. 为快捷方式添加图标:选择应用程序文件夹点击右键添加文件 选择要添加的图标文件 选择快捷方式文件在属性面板中设置ICON属性选择图片文件 
      
    浏览到安装项目中添加的图标 
    5. 添加数据库文件(参见步骤4中添加图标的方式将数据库文件添加到”应用程序文件夹中”(MDF和LDF文件)) 
    6. 添加在安装过程中输入数据库用户名和密码的界面 
    选择安装项目点击右键视图用户界面 选择安装启动点击右键添加对话框文本框A 将文本框A移动到安装文件夹上面 
    7. 设置文本框A的属性 
    选中文本框A,在属性面板中设置相关属性: 
    文本框A中有4个文本框,将Edit3Visible和Edit4Visible设置为false 
    再设置Edit1和Edit2的相关属性. 
    注意:EditXProperty属性: 该属性表示文本框的名称,在后面的代码中我们将通过该名称来访问对应文本框中的文本内容 8. 为安装程序添加自定义操作(调用安装类) 
    选择安装项点击右键视图自定义操作 在自定义操作中选择安装点击安装点击右键添加自定义操作 选择应用程序文件夹主输出确定(因为安装类包含在主输出中) 设置主输出的CustomActionData属性: 
    /name=[NAME] /pwd=[PWD] /targetdir=”[TARGETDIR]\” 
    /name : 在安装类中使用的别名 
    [NAME] : 用户界面中添加的文本框A对应的EditXProperty属性 
    /targetdir=”[TARGETDIR]\” : 安装路径 9. 创建安装类 
    在需要安装的项目中添加安装类 
    选择项目点击右键添加添加新项安装程序类 
    在安装类中重写Install方法,并在该方法中编写代码 10. 点击安装项目右键重新生成. 
    打包程序完成 
    每次修改后都需要重新生成安装项目 添加卸载程序: 
    1. 在解决方案中添加一个控制台应用程序 
    2. 在控制台应用程序的Main()中添加代码 删除数据库时所需要的用户名和密码,可以在安装时保持到文件中,卸载时从文件中读取 
    {676296FF-A972-402A-BDA9-A047D0C198EE}代码安装程序的编码,每个安装程序的编码都是不一样的,所有要选中安装项目,在属性面板的ProductCode属性中获得(注意:/X是不能少的) 
    3. 将卸载项目添加到文件系统视图的”应用程序文件夹”中(参见打包的步骤3) 
    4. 可以”用户的程序菜单”中为卸载程序添加快捷方式(参见打包的步骤4)