- 浏览: 73403 次
- 性别:
- 来自: 厦门
最新评论
-
BlueBing:
linyuliang 写道BlueBing 写道我想再做些修改 ...
IBatis Abator去除注释版 -
linyuliang:
BlueBing 写道我想再做些修改 可否提供下源码呢晚上我回 ...
IBatis Abator去除注释版 -
linyuliang:
xiaohu7924 写道为什么我用这个生成的名字不是你说的驼 ...
IBatis Abator去除注释版 -
xiaohu7924:
为什么我用这个生成的名字不是你说的驼锋名字,还是老样子
IBatis Abator去除注释版 -
BlueBing:
我想再做些修改 可否提供下源码呢
IBatis Abator去除注释版
利用VS2005的“Web安装项目”建立安装包很难对安装过程进行详细控制,因此直接采用“安装项目”来建立web程序安装包。我们需要安装过程中自动创建虚拟目录,并且可以修改数据库连接字符串,假设我们在安装过程中需要用户修改web.config文件里连接字符串其形式如下:
<configuration>
...
<connectionStrings>
<add name="myDataBase" connectionString="Database=testDataBase;Server=10.78.25.23;Uid=sa;Pwd=123;" providerName="System.Data.SqlClient"/>
</connectionStrings>
...
</configuration>
则建立安装包的过程如下:
1)发布网站:右键点击web项目,在弹出菜单里点击“发布网站”将它发布到本地机器。
2)新建安装项目:从菜单处依次点 文件->新建->文件->项目->其他项目类型->安装和部署->安装项目,输入名称与位置,并确定。在项目属性里设置相应的说明内容。
3)在启动项里添加文本框:右键点击项目,在弹出菜单里选择 视图->用户界面,出现用户界面的树形结构。右键点击“启动”节点,添加“文本框(A)”与“文本框(B)”,并将它们移动到“安装文件夹”之上。这两个界面用来接收用户安装过程中输入的“web服务地址与虚拟目录”和“数据库连接字符串”。两个文本框的属性设置如下:
文本框(A)
BannerText:网站设置
BodyText:设置web服务地址与虚拟目录
Edit1Label:web服务器:
Edit1Property:IISSERVER //这个是自己起的名字
Edit1Value:localhost //此为默认值,可不设置
Edit1Visible:True
Edit2Label:虚拟目录:
Edit2Property:VIRTUALDIR //这个是自己起的名字
Edit2Value:testWeb //此为默认值,可不设置
Edit2Visible:True
Edit3Visible:False
Edit4Visible:False
文本框(B)
BannerText:数据库设置
BodyText:设置数据库连接字符串
Edit1Label:数据库服务器:
Edit1Property:DBSERVERNAME //这个是自己起的名字
Edit1Value:10.78.25.23 //此为默认值,可不设置
Edit1Visible:True
Edit2Label:数据库名称:
Edit2Property:DBNAME //这个是自己起的名字
Edit2Value:testDataBase //此为默认值,可不设置
Edit2Visible:True
Edit3Label:登录帐号:
Edit3Property:USERNAME //这个是自己起的名字
Edit3Value:sa //此为默认值,可不设置
Edit3Visible:True
Edit4Label:登录密码:
Edit4Property:PASSWORD //这个是自己起的名字
Edit4Value:
Edit4Visible:True
4)建立安装程序类:新建一c#类库项目“SetupClassLibrary”,然后右键 添加->新建项->安装程序类,建立一安装程序类如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.DirectoryServices;
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using System.Configuration.Install;
using System.Management;
using System.Collections;
using Microsoft.Win32;
using System.Collections.Specialized;
namespace SetupClassLibrary
...{
[RunInstaller(true)]
public partial class MyInstaller : Installer
...{
//先设置私有成员,对应安装程序里接收到的用户输入
private string dbname;
private string dbserver;
private string user;
private string pwd;
private string iis;
private string physicaldir;
private string virtualdir;
public static string VirDirSchemaName = "IIsWebVirtualDir";
private string _target;
private DirectoryEntry _iisServer;
private ManagementScope _scope;
private ConnectionOptions _connection;
public MyInstaller()
...{
InitializeComponent();
}
WriteWebConfig 修改web.config的连接数据库的字符串#region WriteWebConfig 修改web.config的连接数据库的字符串
private void WriteWebConfig()
...{
//加载配置文件
System.IO.FileInfo FileInfo = new System.IO.FileInfo(this.Context.Parameters["targetdir"] + "/web.config");
if (!FileInfo.Exists)
...{
throw new InstallException("缺少配置文件 :" + this.Context.Parameters["targetdir"] + "/web.config");
}
System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
xmlDocument.Load(FileInfo.FullName);
//修改连接字符串
foreach (System.Xml.XmlNode Node in xmlDocument["configuration"]["connectionStrings"])
...{
if (Node.Name == "add")
...{
if (Node.Attributes.GetNamedItem("name").Value == "myDataBase")
...{
Node.Attributes.GetNamedItem("connectionString").Value = String.Format("Database={0};Server={1};Uid={2};Pwd={3};", dbname, dbserver, user, pwd);
}
}
}
xmlDocument.Save(FileInfo.FullName);
}
#endregion
创建虚拟目录#region 创建虚拟目录
private void CreateVirtualDir()
...{
string constIISWebSiteRoot = "IIS://"+iis+"/W3SVC/1/ROOT";
DirectoryEntry root = new DirectoryEntry(constIISWebSiteRoot);
DirectoryEntry tbEntry = root.Children.Add(virtualdir, root.SchemaClassName);
tbEntry.Properties["Path"][0] = physicaldir;//设置物理地址
tbEntry.Invoke("AppCreate", true);
//tbEntry.Properties["DefaultDoc"][0] = "Default.aspx";//设置起始页
tbEntry.CommitChanges();
}
#endregion
Install 从这里开始启动安装#region Install 从这里开始启动安装
public override void Install(IDictionary stateSaver)
...{
base.Install(stateSaver);
physicaldir = this.Context.Parameters["targetdir"].ToString();
virtualdir = this.Context.Parameters["virtualdir"].ToString();
dbname = this.Context.Parameters["dbname"].ToString();
dbserver = this.Context.Parameters["dbserver"].ToString();
user = this.Context.Parameters["user"].ToString();
pwd = this.Context.Parameters["pwd"].ToString();
iis = this.Context.Parameters["iis"].ToString();
// 添加网站
CreateVirtualDir();
// 修改web.config
WriteWebConfig();
}
#endregion
Uninstall 删除#region Uninstall 删除
public override void Uninstall(IDictionary savedState)
...{
//添加自定义的卸载代码
if (savedState == null)
...{
throw new ApplicationException("未能卸载!");
}
else
...{
base.Uninstall(savedState);
}
}
#endregion
}
}
5)添加项目输出:
编译生成“SetupClassLibrary”
然后右键单击2)中建立的安装项目 添加->项目输出中选择“SetupClassLibrary”,选中“主输出”,单击“确定”。这样你可以在解决方案安装项目树中看见多了“主输出来自SetupClassLibrary(活动)”节点。
再右键此安装项目 视图->自定义操作 中选择“安装”节点,右键 “添加自定义操作”,进入“应用程序文件夹”,选中“主输出来自SetupClassLibrary(活动)”,单击“确定。
选中“安装”下的“主输出来自SetupClassLibrary(活动)”节点,在其属性窗口中设置CustomActionData 的值为 /dbname=[DBNAME] /dbserver=[DBSERVERNAME] /user=[USERNAME] /pwd=[PASSWORD] /iis=[IISSERVER] /virtualdir=[VIRTUALDIR] /targetdir="[TARGETDIR]\",这是设置文本框(A)和文本框(B)中的输入与安装程序类中要访问的变量之间的对应关系,其中targetdir="[TARGETDIR]\"代表应用程序安装目录(注意:各个对应关系之间必须用空格隔开)。
6)添加文件:这一步,我们将发布网站时生成的文件夹全部克隆到安装项目中。
右键安装项目,视图->文件系统 在“应用程序文件夹”下按发布网站时生成的文件夹里的结构添加文件夹与文件。
说明:
1.这些文件都需要我们从发布网站的文件夹里添加进来,比如一般需要建立对应的“bin”文件夹,并在里面添加对应的程序集文件,而且一般我们会在“应用程序文件夹”根下添加web.config文件。
2.这里的文件将被复制到目标计算机上,此安装项目将在目标计算机上建立虚拟目录指向此文件夹。
7)编译生成,OK! 到安装项目的debug或者release目录下可看见生成的安装包。
发表评论
-
实现GridView控件的删除多条记录功能系列(1)
2005-08-10 14:15 1471在Asp.Net 2.0中新增的控件GridView可 ... -
实现GridView控件的删除多条记录功能系列(2)
2005-08-10 14:55 1323在上一篇中,我们已经开发了需要的CheckBox控件, ... -
实现GridView控件的删除多条记录功能系列(3)
2005-08-11 12:18 1334本篇将讲述如何解决GridView控件中使用Check ... -
[转]C#正则表达式小结
2007-09-24 11:38 1220地址: http://www.cnblogs.co ... -
[转]全面剖析C#正则表达式
2007-09-24 11:41 1390地址:http://fineboy.cnblogs.com/ ... -
(转贴)VS.NET下水晶报表分发时的问题及解决
2007-10-18 17:27 1180一、载入报表时报错 ... -
(转贴)图解使用VS.NET部署含水晶报表的网站
2007-10-18 17:56 2138Crystal Report ,中文名称“水晶报表”,因为做报 ... -
[转]使用C#进行点对点通讯和文件传输(通讯基类部分)
2007-10-24 10:59 934最近一个项目要用到点对点文件传输,俺就到处找资料写程序,最后终 ... -
[转]使用C#进行点对点通讯和文件传输(发送接收部分)
2007-10-24 11:00 1689上面介绍了通讯的基类,下面就是使用那个类进行发送和接收的部分: ... -
[转载]C#中串口通信编程
2007-10-24 11:01 4525原文及源代码位置:http://bbs.msproject.c ... -
[转]C#多线程编程实例实战
2007-10-24 11:02 1678单个写入程序/多个阅读程序在.Net类库中其实已经提供了实现, ... -
[转]实现同时只允许运行一个程序实例
2007-10-24 11:06 1140方法一: /// <summary> /// 从这 ... -
[转]IIS虚拟目录控制类
2007-10-24 11:08 449using System;using System.Data; ... -
[转]C# 调用API,实现注销远程登录本机的用户
2007-10-24 11:08 1854using System;using System.Manag ... -
[转]C#的usb通讯编程
2007-10-24 11:10 2819using System;using System.Colle ... -
[转]IIS站点管理类
2007-10-24 11:10 974using System;using System.Colle ... -
[转]使用.NET实现断点续传
2007-10-24 11:11 1333断点续传的原理 在了解HTTP断点续传的原理之前,先来说说HT ... -
[转]Datagridview 实现二维表头
2007-10-26 16:42 2345最近把我们的b/s系统,增加智能客户端的功能。确实智能客户端是 ... -
[转]Web项目下NHibernate的Session管理的解决方案
2007-11-07 10:47 3397NHibernate的Session的管理一直是个问题,在系统 ... -
[转] NHibernate对像版本控制使用示例
2007-11-07 10:49 1258<version name="Version& ...
相关推荐
### C# Web程序自定义安装包的制作 #### 背景与意义 在软件开发领域,特别是Web应用开发中,一个良好定制化的安装包对于提高用户体验、简化部署流程至关重要。传统的通过`VS2005`中的“Web安装项目”来创建安装包...
总的来说,"C# Web自定义安装包示例程序 源码"是一个深入学习Web应用程序部署和安装包制作的好材料。通过学习和实践这个示例,开发者可以提升自己的项目打包技能,理解Web应用程序在实际部署中的复杂性,并掌握如何...
这个资料集合专注于使用VS2008和VS2005来构建Web安装包,这两个版本是微软开发工具中的里程碑,提供了强大的Web应用程序部署解决方案。 【描述】:“用VS制作Web安装程序资料集合”可能包括详细的步骤、教程、示例...
标题 "WEB工程Windows安装包制作" 涉及到的是在Windows操作系统中创建Web应用程序的部署包的过程。这个过程通常包括将源代码、依赖库、配置文件等打包成一个易于安装的格式,使得用户可以简单地在他们的系统上安装并...
ASP.NET Web应用程序安装包的制作是一项关键的任务,它涉及到软件分发、用户部署以及系统集成。以下是关于这个主题的详细说明: 1. **创建Web安装程序项目**:在Visual Studio中,你可以通过选择"文件" > "新建" > ...
ASP.NET Web项目的安装包制作是将开发完成的Web应用程序打包成易于部署的形式,以便在不同的服务器上快速安装和运行。这个过程涉及到多个步骤,包括构建、发布、打包和配置。以下将详细介绍这些步骤: 1. **项目...
【制作VS2008.NET应用程序的安装包详解】 Visual Studio 2008(VS2008)是一款强大的开发工具,它支持创建各种类型的.NET应用程序。制作这些应用程序的安装包是发布软件的重要步骤,这可以让用户方便地在他们的...
以下是一个使用VS2005制作Web安装包的详细过程: 1. **预编译理解**: 在开始制作安装包前,了解预编译的概念至关重要。预编译是ASP.NET的一项功能,它允许在首次请求前编译网站,提高后续请求的响应速度。默认...
VS2017安装包制作插件是一种工具,它能够帮助开发者轻松地创建、定制和打包Visual Studio 2017的安装程序。这个插件通常包含一系列功能,旨在简化安装程序的构建过程,使开发者可以自定义安装过程,满足特定项目需求...
【标题】:“Visual Studio(VS)离线安装包制作软件” 【描述】:“VS离线安装包制作软件”指的是能够帮助用户创建Visual Studio完整安装包的工具,这种工具通常用于在没有网络连接或者网络环境较差的情况下,为...
Visual Studio 2005(简称VS2005)提供了一种方便的方法来创建这样的安装包,使得开发者可以轻松地打包和分发他们的Web应用程序。在这个过程中,我们可以利用Visual Studio的“Setup and Deployment”项目模板,它为...
下面我们将详细探讨如何使用VS2005来制作Web安装程序。 首先,我们需要了解Web安装程序的基本概念。Web安装程序,也称为Web Setup项目,是一种自解压的可执行文件,它包含了所有必要的文件和配置信息,可以在用户的...
标题 "轻轻松松将Web工程制作成exe安装包的工具——Smart Install Maker" 提到的是一种软件打包工具,主要用于将Web应用程序转换为可执行(exe)文件,方便用户在Windows操作系统上无需安装Web服务器即可运行。...
InstallShield是一款功能强大的安装包制作工具,广泛应用于各类软件和Web应用程序的打包。 首先,理解Web程序打包的基本概念。Web程序通常由一系列服务器端脚本(如PHP、ASP.NET或Java)、客户端资源(HTML、CSS、...
本篇文章将详细介绍如何利用Visual Studio 2005自带的安装部署工具来制作Web应用程序的安装包。 #### 环境准备 - **操作系统**: Windows Server 2003 - **开发工具**: Visual Studio 2005 - **数据库管理系统**: ...
构建过程中,你可以自定义安装包的输出路径、图标、版本信息等。这些配置可以写在`package.json`的`build`字段内,例如: ```json "build": { "appId": "com.yourcompany.yourapp", "productName": "YourAppName...
总的来说,Advanced Installer 14.9是一款强大的安装包制作工具,尤其适合开发人员和IT专业人员。其绿色便携的特性、中文支持以及全面的功能,使其成为构建高质量Windows安装程序的理想选择。无论你是个人开发者还是...
标题:“MSI安装包制作工具 Advanced Installer V4.1.1汉化绿色版” 描述中提及的“MSI安装包制作工具”是指Windows Installer(MSI)技术,这是一种由微软公司开发的安装包格式,用于在Windows操作系统上部署软件...