`
happmaoo
  • 浏览: 4324179 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

有关VS.NET的安装部署(2)--打包数据库的安装与配置

阅读更多

前面所介绍的有关VS.NET的安装部署,只是简单的打包应用程序,往往在制作安装包时需要连数据库的安装一起打包到安装程序中.而且还要自定义一个用户界面,让用户在安装时输入数据库的配置信息(服务器名,数据库名,登陆用户,密码),用安装程序创建数据库,同时配置应用程序的配置文件.如:连接字符串.

一,首先看一篇有关自定义安装程序的介绍

自定义MSI的安装

二,下载上面文章提供的程序示例,将其中的CustomSteps直接加载到自己的解决方案中,即可使用.所要修改的只是script目录下的脚本文件.(修改成你要创建数据库的脚本),添加此程序的主输出到安装程序的'应用程序文件夹'中.(最好在这个文件夹中新建两个文件夹,bin和install,bin里面放你的应用程序的输出文件,install里面放customSteps的输出文件)

三.右键安装程序项目==>视图==>用户界面

右键'启动'==>添加对话框==>文本框(A),上移到第二个位置.

编辑文本框(A)的属性:

BinnerText:数据库参数

BodyText :请配置用于创建数据库的一些参数,每项都必须填写.

Edit1Label:服务器名称:

Edit1Property:SERVER_NAME

Edit1Value:[ComputerName]

Edit2Label:要创建的数据库名称:

Edit2Property:DATABASE_NAME

Edit2Value: //这里可以填一个默认的数据库名称,也可以不填

Edit3Label:用户名:

Edit3Property:USER_NAME

Edit3Value:sa

Edit4Label:密码:

Edit4Property:PASSWORD

然后生成安装程序...over

----------------------------------

另外提供一个自动生成数据库中数据脚本的函数

#region 生成数据表中数据的脚本
public static string CreateDataScript(string tableName)
{

bool isIdEntity=false;//此表中是否有标识列(自增)
string commandText = String.Format("SELECT c.name ,biaoshi=COLUMNPROPERTY( c.id,c.name,'IsIdentity') ,t.name "+
"FROM syscolumns c inner join systypes t on c.xusertype=t.xusertype "+
"WHERE c.ID = OBJECT_ID('{0}')",tableName);

DataTable fieldList = DBHelper.ExecuteDataTable(CommandType.Text,commandText);//这个方法你自己写吧
if(fieldList ==null || fieldList.Rows.Count==0)
return "";

string getvalue = String.Format("SELECT * FROM [{0}]",tableName);

DataTable dt = DBHelper.ExecuteDataTable(CommandType.Text,getvalue);
if(dt==null || dt.Rows.Count==0)
return "";

string middle ="";

for(int j=0;j<dt.Rows.Count;j++)
{
string fieldString="",valueString="";

DataRow dr = dt.Rows[j];

for(int i=0;i<fieldList.Rows.Count;i++)
{
string fieldName = fieldList.Rows[i][0].ToString();
string biaoshi = fieldList.Rows[i][1].ToString();

if(biaoshi=="1")//如果此列是标识列
isIdEntity = true;

fieldString += "["+fieldName+"],";
valueString += "'"+dr[fieldName]+"',";
}
fieldString = fieldString.Substring(0,fieldString.Length-1);
valueString = valueString.Substring(0,valueString.Length-1);

middle+=String.Format("\n INSERT INTO [{0}]({1}) \n VALUES({2})",tableName,fieldString,valueString);
}

string script = "";
if(isIdEntity )
script = String.Format("SET IDENTITY_INSERT [{0}] ON \n"+middle+
"\n\nSET IDENTITY_INSERT [{0}] OFF"+" \n Go",tableName,middle);
else
script = "\n"+middle;

return script;
}
#endregion

2005-3-13 11:12 by CuiMeteor

ASP.NET设置ie打印两法 (精)(转)

在ASP.Net中最为头痛的可能就是打印设置了。
为了这个问题,我都要熬白头了。网上也找了很多代码,但是总是会存在一些问题。根据我自己的实际试验发现不能用,为找不到对象之类的错误提示。

这里给出两种实际可用的方法:

一。通过注册表修改IE打印设置
<HTML>
<HEAD>
<TITLE>New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="YC">
<script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\Software\Microsoft\Internet Explorer\PageSetup" //IE打印设置的注册表地址

function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" //页眉
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" //页脚
hkey_key="\margin_left"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" //键值设定--左边边界
hkey_key="\margin_top"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
hkey_key="\margin_right"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
hkey_key="\margin_bottom"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
end function
'//

function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b页,&p/&P" //页数-
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d" //网址,日期等信息
end function
</script>
</HEAD>
<BODY>
<table width="100%" border=2 cellspacing=1 align=center cellpadding=1 id=tb1>
<tr>
<td>
<br>
<br>
<br>
<p align="center">
<input type="button" value="Clean" onclick="pagesetup_null()"> <input type="button" value="Reset" onclick="pagesetup_default()"><br>
</p>
</td>
</tr>
</table>
</BODY>
</HTML>

除了以上键值以外还有
duplex
orientation
paper_size
paper_source
printer

注意:上面对页边距的设置为:1,实际设置值为25.4。

昨天发现这个方法有一个致命的缺点。那就是这个只能在安装有.Net框架的机子上有效。因为它所调用的WScript.Shell是.Net框架的...我还以为解决了这个烦人的打印控制了,昨天在客户端一运行简直让我伤心死。呵呵。。。。

难道还要让对什么是.net都不知道的用户去安装.net的框架么。不现实。
所以只能又回到javascript中来了。

二。javascript
今天发现原来以前有时有效有时无效的原因是出在,<input name="idPrint" type="button" value="打印" onclick="doprint()">不能放在页面的<form runat="server" id="Form1">之内,客户端的javascript放在runat server怎么行呢。认识到这个问题就好解决了。以下给出原码:

<script language="Javascript"><!--
function doprint() {
//保留客户打印机设置
var h = factory.printing.header;
var f = factory.printing.footer;
var t = factory.printing.topMargin;
var b = factory.printing.bottomMargin;
var l = factory.printing.leftMargin;
var r = factory.printing.rightMargin;

document.all("printbtn").style.visibility = 'hidden';//打印时隐藏打印按钮
//设置页眉页脚上下左右边距
factory.printing.header = "页眉+_+ohiolee的打印世界";
factory.printing.footer = "想设置页脚么,这里哦";
factory.printing.topMargin="6";//存在最小默认值5.02
factory.printing.bottomMargin="6";//存在最小默认值4.13
factory.printing.leftMargin="2";//存在最小默认值5.08
factory.printing.rightMargin="2";//存在最小默认值6.79。。。本人机子上测出来是这样的,不知道普遍是否如此。
//直接打印
factory.DoPrint(false);//true时弹出打印对话框
//返回到原来的打印设置
factory.printing.header = h;
factory.printing.footer = f;
factory.printing.topMargin=t;
factory.printing.bottomMargin=b;
factory.printing.leftMargin=l;
factory.printing.rightMargin=r;
//显示打印按钮
document.all("printbtn").style.visibility = 'visible';//通过document.all("printbtn").来指定页面中的任何类,并给以进一步属性设置
}
//--></script>
</HEAD>
<body>
<OBJECT id="factory" style="DISPLAY: none" codeBase="ScriptX.cab#Version=5,0,4,185" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
viewastext>
</OBJECT>
<div id="printbtn"><input name="idPrint" type="button" value="打印" onclick="doprint()"></div>

codeBase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360" 这里需要给出ActiveX ScriptX.cab的地址,你可以下载到自己的网站中并提供出来,也可以引用其他网站的。当用户访问该网页时,将自动判断该浏览器是否已装有,没有的话,弹出下载警告。同意下载之后,就可以了。

注意不要把<div id="printbtn"><input name="idPrint" type="button" value="打印" onclick="doprint()"></div>放在runat server的form中哦。。。不要再犯像我一样的错误了哦。

分享到:
评论

相关推荐

    SQL数据库安装部署与.net打包

    SQL数据库安装部署与.net打包 介绍的很详细,想打包部署数据库的可以看下

    Asp.net与SQL一起打包部署安装

    借鉴MSDN webcasts的Asp.net程序部署和李洪根的一篇文章,然后加上自己的亲身体会,把整个SQL和Asp.net(vb.net)一起打包的全过程写一下。

    vb.net打包,自动安装SQL数据库

    打包,并自动安装SQL数据库. 修正了MVP李洪根".NET平台下WEB应用程序的部署(安装数据库和自动配置)"中的osql用法错误,已测试通过。

    .NET平台下WEB应用程序的部署(安装数据库和自动配置)

    详细介绍ADO.NET平台下WEB应用程序的部署(安装数据库和自动配置),适合初学者

    sql数据库打包部署安装.doc

    1. 打开VS.NET2005。 2.在“文件”菜单上指向“新建项目”。 3. 在“新建项目”对话框中,选择“项目类型”窗格中的”其他项目类型”中的“安装和部署”,然后选择“模板”窗格中的“安装项目”。在“名称”框中...

    SQL数据库的打包部署安装

    SQL数据库的打包部署安装 目的:在客户端服务器上”附加数据库文件”

    SQL数据库安装与.NET打包

    用于程序打包部署说明。

    c# 7.1 and .net core 2.0 modern cross platform development third edition 电子书+源码

    在快速了解了C#以及.NET如何工作之后,本书深入研究了.NET Standard 2.0类库,其中包括打包和部署自己的库,以及使用通用库来处理集合,性能,监视,序列化等主题。文件,数据库和加密。本书的最后一部分演示了可以...

    Asp.net(C#)和附加SQL数据库(.mdb)文件的打包部署安装.docx

    免费面积分 C# SQL (.mdb) 打包部署安装

    .NET WEB应用程序打包过程指导

    个人整理.NET Web应用程序打包为安装文件,可设置安装过程是否新建数据库,以程序安装的方式替代部署的过程

    asp.net知识库

    将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

    NET平台下WEB应用程序的部署

    但是,这样制作的安装程序,只是将Web页和ASP.NET程序编译的DLL文件安装到目标机器的IIS目录,对于一般的应用程序是可以的(比如用Access数据库,可以一起打包到安装程序中);如果数据库是SQL SERVER,需要在部署...

    .net web影城程序打包成安装文件

    个人整理.NET Web应用程序打包为安装文件,可设置安装过程是否新建数据库,以程序安装的方式替代部署的过程

    Pro .NET Best Practices .net最佳实践 英文版

    第2章 .NET实践领域 2.1 从内部挖掘 2.1.1 技术债 2.1.2 缺陷跟踪系统 2.1.3 反思分析 2.1.4 前瞻性分析 2.2 应用程序生命周期管理 2.3 设计模式和开发指南 2.3.1 .NET设计规范 2.3.2 微软的模式和实践小组 2.3.3 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    ● 打包和部署ASP.NET应用程序的方法 ● 快速、逻辑地检索、更新和删除数据 本书读者对象 本书适合于有一些ASP.NET基础知识的学习者以及准备迁移到ASP.NET 2.0的有经验的程序员和开发人员。 目录回到顶部↑ 第1...

    Visual C#.NET项目实战开发从入门到精通 Part 2

    然后讲解5个项目的开发实例,每个项目均遵循“需求分析→开发规划→数据库设计及实现→各模块界面设计及功能实现→打包部署”的开发思路做深入讲解,详尽剖析大量源代码,适时讲解开发技巧,从而增长读者的开发阅历...

    使用Microsoft Visual Studio实现安装部署

    通过使用Microsoft Visual Studio实现安装部署,最终打包成.exe安装程序(可以是winForm也可以是asp.net web应用程序),还讲解了如何自动安装SQL SERVER并且安装应用程序的数据库。 资源包括: 1、Microsoft Visual...

    Visual Studio.Net(VS) 源码管理器

    如果你安装了VSS 6,也需要再安装一次VSS 6C,否则在VS.Net环境中将源代码加入到VSS数据库中将会出现错误。 二、 创建空的SourceSafe数据库在开始工作之前,需要建立一个空的SourceSafe数据库,来存放源代码控制数据...

    Visual C#.NET项目实战开发从入门到精通 Part 4

    然后讲解5个项目的开发实例,每个项目均遵循“需求分析→开发规划→数据库设计及实现→各模块界面设计及功能实现→打包部署”的开发思路做深入讲解,详尽剖析大量源代码,适时讲解开发技巧,从而增长读者的开发阅历...

    asp.net面试题

    五、下列ASP.NET语句( )正确地创建了一个与SQL Server数据库的连接。 A.SqlConnection con1 = new Connection(“Data Source = localhost; Trusted_Connection =Yes; Initial Catalog = myDB”); B.SqlConnection ...

Global site tag (gtag.js) - Google Analytics