打包过程vs2010(包含卸载功能):
1、 添加安装和部署。
首先打开一个要进行打包的项目的设计界面,然后点击vs上的“文件”→“添加”→“新建项目”→“已安装的模板”→“其他项目类型”→“安装和部署”→“Visual Studio Installer”→“安装项目”。
然后为安装项目起一个名称,再选择一个安装位置,如图:
最后点击确定。如图:
2、 配置应用程序文件夹
选中应用程序文件夹,在右边空白位置右键“添加”→“项目输出”→“主输出”,如图:
最后点击“确定”,如图:
如果程序中用到了外部的文件,那么可以继续 *** 作:
右键“添加”→“文件”,选择要添加的文件,如图:
现在应用程序文件夹部分就处理完了。
3、 创建快捷方式
快键方式可以创建两个:“开始”菜单一个,桌面一个
1)、创建“开始”菜单中的快捷方式:
点击中的‘用户的“程序”菜单’,在右面空白处右键
“添加”→“创建新的快捷方式”,然后选择“应用程序文件夹”下的程序的exe文件,如图:
然后给快捷方式起名,
再设置快捷图标,
右键新创建的快捷方式的名称,打开“属性窗口”,通过Icon属性设置快捷方式的图标,如图:
2)、创建桌面的快捷方式图标:
过程同 创建“开始”菜单中的快捷方式一样
4、 更改默认安装目录:
右键“应用程序文件夹”→“属性窗口”里的“DefaultLocation”属性可以更改默认的安装目录,
改前:
改后:
5、 打包时,如果需要把对应的.NET Framework 打到安装包中,此时促进行如下 *** 作:
右键安装项目名→“属性”→“系统必备”,勾选对应的系统必备组件
然后指定系统必备组件的安装位置,
注:如果选“从组件供应商的网站上下载系统必备组件”(安装客户端时,pc机需联网)
如果选“从我的应用程序相同的位置下载系统必备组件”,那么打包时将会从程序中把组件打进去
(安装客户端时,pc机无需联网——推荐)
6、 添加卸载功能
在应用程序文件夹右边空白处,右键->添加->文件,选择c:\windows\system32文件夹下的msiexec.exe文件。然后重命名为Uninstall.exe。改不改名字都可以。如图:
用鼠标左键单击安装项目名,查看其属性,注意不是右键,属性。查看其ProductCode属性。然后复制该属性的值。如图
然后打开刚创建的那个卸载快捷方式的属性对话框,在Aguements属性中输入"/x {ProductCode}",将ProductCode替换为刚粘贴的值
最后点击生成打包程序即可
7、 用winrar将vs生成的安装程序打成一个 .exe包(方便安装)——前提,一定安装了winrar压缩软件
进行到第六步时,用vs为winform程序打包就已经完成了,不过此时会在安装程序的Debug文件夹生成2个文件夹、1个.exe文件和1个.msi文件,而.exe安装时,又依赖于.msi文件,另外两个文件夹是对应的 .NET Framework 组件,
这个时候给客户安装时拷贝过去的内容较多,也容易安装出错,如果把这些安装内容都打在一起,形成一个 .exe 文件,就比较方便了,
此时,可以用winrar的 自解压格式压缩文件 来实现,实现过程:
1>将要打在一起的文件及文件夹全部选中,右键→“添加到压缩文件”,在打开的压缩面板的“常规”选项卡中勾选“创建自解压格式压缩文件”,此时会发现默认的压缩文件名编程了 .exe 后缀名了;压缩方式最好选择“存储”,这样打包后的程序会很快解压缩并运行。如图:
2>设置运行文件:再切换到“高级”选项卡,点击“自解压选项”,“常规”里设置程序解压后运行的文件(这个很重要)如图:
3>设置安装程序文件的图标:
切换到“文本和图标”,点击“从文件加载自解压文件图标”后的“浏览”按钮,选择安装程序文件的图标,如图:
先不要着急点击“确定”,还有最后一项设置~ ~ ~
4>切换到“模式”下,勾选“解包到临时文件夹”和“全部隐藏”,一路点击“确定”,打工告成!!
8、 完成了!
此时我们会看到Debug下是这样的:
“测试安装程序.exe”就是最中生成的打包文件,直接点击运行就行了!!
(1)用窗体的静态方法作为显示窗体和使用窗体功能的入口一个窗体往往会显示其他窗体以实现一定的功能。通过在被调用窗体中实现一个静态函数供调用窗体使用可以简化窗体间的交互,隐蔽被调用窗体的数据,从而加强封装特性。
如主窗体为FormMain,被调用窗体为FormChild。在FormChild中实现一个静态方法:
Static void DoSomething()
{
new FormChild.ShowDialog()
//实现功能
//…
}
在主窗体中调用被调用窗体的DoSomething()方法:
FormChind.DoSomething()
这样就可以显示被调用窗体并由被调用窗体执行预设的功能,并且该静态函数封装了构造和初始化被调用窗体的逻辑。程序的结构更加清晰,类的职责更加明确。
(2)判断用户在对话框中点击的按钮
对话框的ShowDialog方法会返回DialogResult类型的返回值。DialogResult是枚举类型,通过检查该枚举值,即可知道用户是通过单击哪个按钮关闭对话框的。
例如,要检测用户是否是单击了OK按钮从而关闭文件对话框,可以使用如下代码:
if (this.openFileDialogPhoto.ShowDialog()==DialogResult.OK)
{
…
}
(3)将数据库中读取的照片文件显示在控件中
从数据库中读取照片,照片的列row.phptoImage是byte 数组类型。要将照片直接显示在控件中,而非先存储在硬盘上再调入控件显示,需要使用MemoryStream类。具体方法如下:
MemoryStream mstream
if(row.photoImage.Length!=0)
{
mstream=new MemoryStream(row.photoImage)
this.picPhoto.Image= new Bitmap(mstream)
}
(4)使用 Command 对象的 ExecuteScalar 方法
一般使用 Command 对象的 ExecuteReader 方法来将数据库的返回结果保存在 DataReader 中。如以下代码所示:
dbReader = cmd.ExecuteReader();
但如果返回结果是单个标量值,如一个整数或一个字符串,则可以执行 Command 对象的 ExecuteScalar 方法直接获取该值。
编码示例如下:
byte b
b = (byte)cmd.ExecuteScalar()
(5)为 Command 对象添加参数的两种方法
这两种方法其实是 Parameters 对象的 Add 方法的两种变体。第一种方法比较简单,就是直接使用 Add 方法添加参数,并同时指定参数的类型和值。代码如下:
cmd.Parameters.Add("@EmpID",System.Data.SqlDbType.Int).Value = iEmpID
另外一种方法比较复杂,它需要先声明一个 SqlParameter 类型的对象,然后使用 Add 方法添加该参数对象。这种方法便于调试。代码如下:
SqlParameter paramEmpID = new SqlParameter("@EmpID", System.Data.SqlDbType.Int)
paramEmpID.Value = strSelfIntro
cmd.Parameters.Add(paramEmpID)
(6)解决Typed DataSet中空字段值的问题
Typed DataSet可以大大提高开发的效率。但是在某个字段值为空的情况下,使用Typed DataSet读取该字段会引发系统异常。要解决这个问题有两种方法:
1)在数据库中为所有运行为空的字段设置缺省值
2)修改VS.NET自动生成的XSD文件
在这里仅介绍第二种方法。对于值可以为空的字段,XSD文件中原来的描述应该类似如下代码(其中DeptName、Title和Telephone字段在数据库中可以为空值):
<xs:elementname="Name"type="xs:string"/>
<xs:elementname="LoginName"type="xs:string"/>
<xs:elementname="Email"type="xs:string"/>
<xs:elementname="DeptName"type="xs:string"minOccurs="0"/>
<xs:elementname="Title"type="xs:string"minOccurs="0"/>
<xs:elementname="Telephone"
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007921/72800.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)