打包程序:

1,解决方案—右键菜单“添加—新建项目—其他项目类型—安装和部署—Visual Studio Installer—安装项目,输入名称Setup1,点“确定”

2,添加开始程序中的文件夹:右击左侧“应用程序文件夹”—添加—文件夹,自己设置名称。这里的作用就是好管理,这里我就叫它“测试打包系统”然后再右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称,这里我就叫它“测试打包系统”

3,添加主输出:右击左侧“应用程序文件夹”—测试打包系统(即刚刚创建的文件夹),添加—项目输出-主输出-确定。

下一步:添加主输出

4,添加开始程序中和桌面的主程序快捷方式:击左侧“应用程序文件夹”—测试打包系统(即刚刚创建的文件夹),右键菜单“创建主输出来自***的快捷方式”,命名为“测试打包系统”。然后将其分别拖到左侧“用户的程序菜单”测试打包系统(即刚刚创建的文件夹)和左侧“用户桌面”(或单击左侧刚新建的文件夹--右侧右键—创建新的快捷方式--选择“应用程序文件夹---主输出--“确定” 单击左侧用户桌面--右侧右键—创建新的快捷方式---选择“应用程序文件夹---主输出---确定

5,设置程序图标:先把 图标文件放到你的程序目录下---单击左侧“应用程序文件夹”---Images(自己创建的文件夹),---空白处右键—添加—文件---图标文件。然后左侧“用户的程序菜单下”的文件夹 ---单击刚才新建的程序快捷方式---属性窗口---Icon—浏览—图标文件---确定。同理添加“用户桌面”里快捷方式的图标。

添加"快捷方式的属性"

浏览找到图标文件---确定。

6,添加卸载功能:右击左侧“应用程序文件夹”—测试打包系统(即刚刚创建的文件夹),添加—文件,在 c:\windows\system32文件夹下找到msiexec.exe文件然后像添加主程序快捷方式一样在开始程序中添加这个卸载的快捷方式,名字可以自己设置,这里我就叫它“卸载系统”。

在“解决方案管理器”中单击“Setup1”,也就是你的安装项目,在属性窗口找到“ProductCode”,复制它后面的值,然后单击刚新建的卸载的快捷方式“卸载系统”,属性中找到“Arguments”,在后面的框里输入 “/x (空一格)”再加上刚才复制的值就行了。

7,在Setup属性中可以自己设置“ProductName”和“Title”的内容;

8,修改安装默认路径:单击左侧“应用程序文件夹”,属性中“DefaultLocation”把中间的“[manufacturer]”删除,否则安装路径中会出现你自己的用户名。

9,添加系统必备:右setup1—属性—系统必备按钮,在“指定系统必备组件的安装位置”中选择“从与我的应用程序相同的位置下载系统必备组件”,确定。

10,生成安装项目:右键“Setup1”—生成,稍等会儿,OK,大功告成了!然后到你的项目文件夹中可以看到“Setup1”文件夹,在“Debug”下就可以看到安装文件了!

二、自定义用户界面

1、打开用户界面

2、这里可以设置已有窗体的属性和新增窗体

设置窗体属性

比如这里可以设置一下BannerBitmap,安装窗口上面的图片,方法和前面的ICO文件一样,浏览去找Images下面的Bmp文件即可!

就是这样的效果,哈哈,效果差了点啊!

可以根据需要来新增窗口,比如密码啊,等等

就是上面的这个窗口

三、卸载程序怎么打包上去?

我试了好几种方面都不太好使,可能是没理解!最后用了这一种方法,感觉还不错!

1、新建一个控制台程序

2、看代码

Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace UninStall

{

class Program

{

static void Main(string[] args)

{

string sysroot = System.Environment.SystemDirectory;

System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {522B529D-8A62-432D-962F-D0CFF826775E} /qr");

}

}

}

注意上面代码里的红字部分,这个就是你要打包的程序的安装与部署项目的ProductCode,那么这个ProductCode在哪里找呢?请记住,这里是两个系统,一个是你要打包的系统,另一个是控制台程序,所以啊,这点,要理解!去你要打包的项目里去找

看到了吧,就是它了!把它拷贝过来,放在控制台程序里生成一下,上面UNIT里所导入的文件就是现在生成的文件了!!

最新文章

  1. windbg运行
  2. c++类的嵌套(1)
  3. 彻底删除java*
  4. 多线程、多进程、协程、缓存(memcache、redis)
  5. JSP 九个隐含JSP对象
  6. Unity 3D 粒子系统的一点经验
  7. JavaBean中的get/set 的命名规范
  8. error C2471: 无法更新程序数据库 vc90.pdb
  9. ES6的let命令实现猜想
  10. Ubuntu 12.04 Server OpenStack Havana多节点(OVS+GRE)安装
  11. MediaWiki基本设置
  12. Android studio 安装,JDK 出错解决方案
  13. 犯罪团伙利用POS机刷信用卡积分转卖 年获利千万
  14. 怎么样ubuntu 64 11.04 在执行32位程序
  15. 记一次Debian下PHP环境的搭建(nginx+mariadb+PHP)!
  16. Launcher知识的demo,手机管家小伙家与悬浮窗
  17. codeforces581D
  18. node day1 login
  19. Vue.js MVVM及数据绑定原理
  20. Flutter 网络请求库http

热门文章

  1. 在Linux服务器上安装Python3.7
  2. EAC3 mantissa quantization(VQ & GAQ)
  3. 传奇HERO引擎给装备加套装属性技巧
  4. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  5. 【vue store的使用方法】(this.$store.state this.$store.getters this.$store.dispatch this.$store.commit)
  6. C#中对虚拟属性和抽象属性的重写有什么异同
  7. Oracle 11G统计信息自动收集及调整
  8. vue+vuex项目中怎么实现input模糊查询
  9. [单片机] ESP8266 开机自动透传
  10. Linux - gitlab的命令