手把手教你用C#打包应用程序[打包Framework]

摘要:
打开VS以创建新的安装部署项目。安装向导完成后,您可以进入项目文件夹:添加应用程序的可执行文件以及相应的类库和组件。右键单击可执行文件,然后剪切或复制左侧“用户程序菜单”和“用户桌面”的快捷方式。安装安装程序后,将在“开始->所有程序”和“桌面”上生成程序的快捷方式。然后,右键单击左侧的“应用程序文件夹”以打开属性对话框:

1:新建安装部署项目
打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图)
此主题相关图片如下:

手把手教你用C#打包应用程序[打包Framework]第1张
2:安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成.


3:开始制作
安装向导完成后即可进入项目文件夹:
双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来.

 手把手教你用C#打包应用程序[打包Framework]第2张

然后右击你的可执行文件,创建快捷方式,然后把快捷方式分别剪切或复制到左边的"用户的'程序'菜单"和"用户桌面"中.
这样安装程序安装安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式.

手把手教你用C#打包应用程序[打包Framework]第3张
然后右击左边的"应用程序文件夹"打开属性对话框:

将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉,
不然的话做好的安装程序默认安装目录会是"c:programm file你的用户名安装解决方案名称";

然后打开解决方案管理器,右击你的解决方案名称,选择属性:

在打开的属性页中,选择"系统必备",

 手把手教你用C#打包应用程序[打包Framework]第4张

在打开的系统必备页中,选中如下中的选择项,这个很重要!!!!!1!!!!!
选上以后,在生成的安装文件包中包含.netframework组件.(这个选项默认是没有选中的)

 手把手教你用C#打包应用程序[打包Framework]第5张

好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功!
4:制作完成
现在打开解决方案文件夹下的debug文件夹,就可以看到生成的安装文件了.

【续】关于"卸载"功能的添加
上面的文章只介绍了简单的生成安装的方法,
但是在vs.net2005下并没有直接生成卸载程序的功能,
所以我们只好用msi来实现了,
原理我就不讲了,网上一搜一堆,我只讲操作,
【1】:在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,
这个文件在c:windowssystem32文件夹下,

 手把手教你用C#打包应用程序[打包Framework]第6张


添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe",

当然这个关系不大,改不改都行的.
然后给他创建一个快捷方式,放到桌面或者"开始-程序"中,
我选择放在了开始菜单中,然后下面我们要的做的就是查找这个部署项目的ProductCode了,
鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性,
这个区别很大,这时你就可以看到ProductCode了,

 手把手教你用C#打包应用程序[打包Framework]第7张

然后打开你创建的那个快捷方式的属性对话框,
在Aguements属性中输入"/x {ProductCode}",

 手把手教你用C#打包应用程序[打包Framework]第8张

手把手教你用C#打包应用程序[打包Framework]第9张

好了,然后点击"生成解决方案"即可生成带有卸载功能的安装程序了.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/forsiny/archive/2009/11/15/4810561.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/forsiny/archive/2009/11/15/4810561.aspx

免责声明:文章转载自《手把手教你用C#打包应用程序[打包Framework]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ThinkPHP漏洞分析与利用linux实践之程序破解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js object 常用方法总结

Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。 Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象...

微信小程序:页面生命周期

小程序生命周期分为应用生命周期和页面生命周期 1、Onload:页面加载时触发,一般在onLoad中发送异步请求来初始化页面数据。 2、onShow:页面显示时触发 3、onReady:页面初次渲染完成时触发。 4、onHide:是页面隐藏时触发,注意不是应用隐藏,切后台时,页面就会隐藏。即整个小程序隐藏时,页面也就隐藏了。另外,在当前页面跳转的时候也相...

随机数的深究

几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数。比如在.Net中编写下面的代码: Random rand = newRandom(); Console.WriteLine(rand.Next()); 运行后结果如下:     Next()方法用来返回一个随机数。同样的代码你执行和我...

ElementUI中的el-table怎样实现绑定对象数组时每一列不同控件的动态数据绑定

场景 ElementUI中的el-table中实现动态添加一行、删除一行、清空所有行: https://mp.csdn.net/console/editor/html/107815187 上面实现的效果如下 其中每一行都是动态添加的,每一行对应的是一个对象,每一列对应的是一个对象的属性。 所以整个el-table绑定的数据源就是一个对象的数组。 但是在...

Vue Element 使用 icon 图标 (第三方)

Vue Element 使用 icon 图标 (第三方) element-ui 自带的图标库还是不够全, 还是需要需要引入第三方 icon, 自己在用的时候一直有些问题, 参考了些教程, 详细地记录补充下 对于我们来说, 首选的当然是阿里 icon 库 教程: 1. 打开阿里 icon, 注册 > 登录 > 图标管理 > 我的项目 图标...

WPF DataContext与Binding的关系

在前台UI创建一个Label绑定到myLabel <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsof...