[WinForm] VS2010发布、打包安装程序(超全超详细)

from:

http://blog.csdn.net/y13156556538/article/details/55532184


1、 在vs2010 选择“新建项目”→“ 其他项目类型”→“ Visual Studio Installer→“安装项目”:

(如果是在solution中添加,就直接solution -- 右键 -- 添加project)

mamicode.com,码迷

命名为:Setup1 。

这是在VS2010中将有三个文件夹,

1.“应用程序文件夹”表示要安装的应用程序需要添加的文件;

2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe;

3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。

2、 应用程序文件夹中点右键 添加文件:表示添加要打包的文件;

mamicode.com,码迷

添加的文件一般是已经编译过 应用程序的debug目录下的文件;

mamicode.com,码迷

如果debug 下面有子文件夹 则需要“添加文件夹”,例如:data 【在应用程序文件夹 里面先添加folder,并重命名为data,然后在data folder中把原来data folder里面的file再加进来】

mamicode.com,码迷

mamicode.com,码迷

然后把对应的子文件里的内容添加到此文件夹中;

mamicode.com,码迷

把需要创建程序快捷方式的图标也添加进来:后缀名为:ico

mamicode.com,码迷

3、 在创建的项目名称(Setup1)上点击右键:属性

mamicode.com,码迷

选择系统必备:

mamicode.com,码迷

然后选择.NET的版本,和Windows Installer3.1(可选项)

选择:“从与我应用程序相同的位置下载系统必备组件”

这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

mamicode.com,码迷

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”à“启动条件”:

mamicode.com,码迷

然后VS2010会创建如下文件:

mamicode.com,码迷

在“启动条件”中 , 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

mamicode.com,码迷

这样.NET Framework 2.0上创建的项目在安装时,就不会安装.NET3.5或其他版本,

也不会重启(解决.NET 2.0 创建的项目,安装.NET FrameWork3.5的问题)。

4、 设置安装文件的目录(路径):

创建的项目名称(setup1)点击左键(不是右键),在属性中设置参数如下图:

mamicode.com,码迷

其中Author 为作者;Manufacturer为公司名称;ProductName为应用程序的名字;

例如我们设置为:BeyondKKO;Manufacturer:自由公司;ProductName:串口测试。

把InstallAllUsers 设置为True 。

(这样在“控制面板”程序中会显示公司的名称;

在安装时会默认为“任何人”,否则默认为“只有我”)

mamicode.com,码迷

在应用程序上点击左键,如下图:第一个为系统主目录(默认C:\Programe),第二个为公司名([Manufacturer]),第三个为应用程序名称,这样在安装时就会创建两层的文件路径。需要删除DefaultLocation中的:[Manufacturer] 。删除后只有应用程序的名称。

mamicode.com,码迷

5、 创建应用程序图标与卸载程序:

A.“在应用程序文件夹”中的.exe文件中,点击右键,创建快捷方式:

mamicode.com,码迷

mamicode.com,码迷

重命名“串口测试程序”,然后点击右键属性:选择Icon

mamicode.com,码迷

双击进入选择我们之前添加的“MiXer.ico”

mamicode.com,码迷

确定后,拖动此快捷方式到“用户桌面”

B. “用户的‘程序’菜单” 中添加一个文件夹,命名为:“串口程序”

然后同样的方式创建TEXTCOM.exe一个快捷方式(“串口测试程序”),拖动到“串口程序”中;

然后给.NET应用程序创建一个卸载程序:

在“应用程序文件夹”中添加:C:Windows\System32\Msiexec.exe

mamicode.com,码迷

Msiexec.exe上右键创建快捷方式,创建的快捷方式重命名为:卸载,把此快捷方式拖动到“串口程序”;

mamicode.com,码迷

点击项目名称(Setup1),在属性中找到:ProductCode

mamicode.com,码迷

复制此ProductCode ,粘贴到“卸载”快捷方式的Arguments属性,前面加/x空格

mamicode.com,码迷

6、 完成以上步骤,就可以生成解决方案了(需要build setup project)。

7、 生成解决方案后,在debug文件夹中就是我们需要的安装包。

mamicode.com,码迷

8、 安装完在开始菜单中有“串口程序”的文件夹,里面有我们创建的两个快捷方式;

mamicode.com,码迷

桌面上也有快捷方式。

mamicode.com,码迷

在控制面板的程序与功能里面可以查看安装信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【译】什么导致了Context泄露:Handler内部类

思考下面代码 1 public class SampleActivity extends Activity { 2 3 private final Handler mLeakyHandler new Handler() { 4 Override 5 public void handleMessage(Message msg) { 6 // ... 7 } 8 } 9 } 如果没有仔细观察,上面的代码…

苹果应用上架遇到的问题(2017年4月27日)

在更新app store的时候报(如图): ERROR ITMS-90086: "Missing 64-bit support. iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK or later. We recommend using the default "S…

工作者对象HttpWorkerRequest

在ASP.NET中,用于处理的请求,需要封装为HttpWorkerRequest类型的对象。该类为抽象类,定义在命名空间System.Web下。 #region Assembly System.Web.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFr…

苹果应用上架,一些信息的勾选(2017年4月27日)

1、分级的各种选项的选择全部选否 (我们公司是医疗相关的app,医疗的选项也是选择的否) 2、

C# 线程池ThreadPool

什么是线程池?为什么要用线程池?怎么用线程池? 1. 什么是线程池?.NET Framework的ThreadPool类提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。那么什么是线程池…

苹果应用上架,图片的要求(2017年4月27日)

看这个提示应该就明白了吧。 哈哈,我还是自己再说一遍加深一下印象吧:如果应用在各个尺寸iphone屏幕上面外观一样,就只准备5.5英寸的图就可以了;如果有所不同,就按照实际情况,准备不同屏幕尺寸的图片即可。…

android Instrumentation 转载

Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。Android测试…

【C#学习笔记】使用C#中的Dispatcher

form:https://www.jianshu.com/p/0714fc755988之前的文章说过了如何使用BackgroundWorker,今天要说的是WPF程序员处理多线程的另外一个方式 - Dispatcher当我们打开一个WPF应用程序即开启了一个进程,该进程中至少包含两个线程。一个线程用于处理呈现&…

html body标签

table table 属性&#xff1a; border &#xff1a;定义表格的边框宽度&#xff0c;默认为0&#xff0c;即无边框。<table border"1"> title &#xff1a;表格的提示信息&#xff0c;当鼠标移到表格上方时&#xff0c;所提示的信息。 cellpadding &#xff1a;…

DataReceivedEventHandler 委托 接收调用执行进程返回数据

https://msdn.microsoft.com/zh-cn/library/azure/system.diagnostics.datareceivedeventhandler备注创建 DataReceivedEventHandler 委托时&#xff0c;需要标识将处理该事件的方法。 若要将事件与事件处理程序关联&#xff0c;请将该委托的一个实例添加到事件中。 除非移除了…

coreData

CoreData使用 创建步骤流程 第一步先创建.xcdatamodeld文件&#xff08;New File -> iOS -> Core Data ->Data Model&#xff09; 屏幕快照 2016-07-07 下午10.40.16.png名字虽然可以任意取&#xff0c;但最好还是取和自己存储数据库名字一样的名字。这样可读性更高些…

PetaPoco初体验(转)

PetaPoco初体验&#xff08;转&#xff09; PetaPoco初体验&#xff08;转&#xff09;大部分转自&#xff1a; http://landyer.com/archives/138 PetaPoco C#微型ORM框架&#xff0c;基本无需配置&#xff0c;仅由单个cs文件构成&#xff0c;支持.net3.5 .net4.0。 截稿时Peta…

iOS当中的设计模式

代理模式 应用场景&#xff1a;当一个类的某些功能需要由别的类来实现&#xff0c;但是又不确定具体会是哪个类实现。 优势&#xff1a;解耦合 敏捷原则&#xff1a;开放-封闭原则 实例&#xff1a;tableview的 数据源delegate&#xff0c;通过和protocol的配合&#xff0c…

c#的dllimport使用方法详解

DllImport是System.Runtime.InteropServices命名空间下的一个属性类&#xff0c;其功能是提供从非托管DLL&#xff08;托管/非托管是微软的.net framework中特有的概念&#xff0c;其中&#xff0c;非托管代码也叫本地&#xff08;native&#xff09;代码。与Java中的机制类似&…

VS2010中 C++创建DLL图解

一、DLL的创建 创建项目: Win32->Win32项目&#xff0c;名称&#xff1a;MyDLL 选择DLL (D) ->完成. 1、新建头文件testdll.htestdll.h代码如下&#xff1a;#ifndef TestDll_H_#define TestDll_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimp…

使用公用表表达式的递归查询

微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。公用表表达式 (CTE) 具有一个重要的长处&#xff0c;那就是可以引用其自身。从而创建递归 CTE。递归 CTE 是一个反复运行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。 当某个查询引用递归 CTE 时…

C#委托实现C++ Dll中的回调函数

from:https://blog.csdn.net/ferrycooper/article/details/63261771很多的Dll都是C和C写的&#xff0c;那么如果C#想要调用Dll中的函数怎么办&#xff0c;尤其是Dll函数其中一个参数是函数指针的&#xff0c;即里面有回掉函数的用C#怎么实现&#xff1f; C中的回掉函数在C#中有…

15个最好的HTML5前端响应式框架(2014)

文中的多个框架基于SASS创建&#xff0c;SCSS是一种比LESS更简洁的样式表编程语言&#xff0c;它能够编绎成CSS&#xff0c;可复用CSS代码&#xff0c;声明变量&#xff0c;甚至是函数&#xff0c;类Ruby/Python的语法。參见&#xff1a; LESS vs SASS&#xff1f;选择哪种CSS样…

【转载】Direct3D基础知识

原文&#xff1a;Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决.1. D3D体系结构D3D与GDI处与同一层次,区别在于,D3D可以使用HAL(Hardware Abstraction Layer)通过DDI来访问图形硬件,充分发挥硬件性能.…

关于Xcode隐藏打印的logs的方法

https://www.cnblogs.com/jukaiit/p/5881062.html 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 添加参数&#xff1a; Name &#xff1a;OS_ACTIVITY_MODE Value : disable