(转)详解Vs2008下打包安装程序的一些技巧(含win7下提权限、卸载以及安装时定向到网页)...

1、怎么使得程序窗口左上角和任务栏有图标,如下图所示:

                    

           其实这个问题不应该放到程序打包这部分讲,只不过对于一些初学者而言,在这提下也许会有很大的帮助(想到自己刚学.net那会了,呵呵)。方法之一的话就是先添加一个图标文件到项目中,然后切换到每个界面设计器,右键窗体的属性,在属性窗口有个Icon选项,下面的也就不用多说了吧~

  

     2、 先新建一个空的解决方法,File->New->Project->Other Project Types->Visual Studio Solution->Blank Solution,这儿取个名称SetupDemo:

          如图:

          

    3、在解决方案中添加个项目工程,右键上图中的解决方案,点击 Add->New Project,选中Windows Form Application模板,输入SetupForm,结果如下:

          

        

      4、给项目添加些基本信息:

          在上图中,右键SetupForm后单击Property或者直接双击上图中的Properties,会出现下图

          

          左侧很多选项卡,所以可以更改的东西很多,大家可以视需要而定制,这没必要赘述。大家可以点击上图中的Assembly Information 按钮,添加项目出品公司信息,如下图所示:

           

          

          5、本来这应该讲添加安装部署项目了,但是对于在Windows7上开发的朋友们,还需要加上额外的一部,那就是关于程序安装后的权限问题。大家知道,从Vista开始Windows操作系统便加入了UAC机制,所以问题就出现了:如果我们制作的程序被安装到了系统盘了会怎样?有心的会发现,当程序进行一些诸如IO操作的时候,这些都会被操作系统要求以管理员权限运行,否则所有的操作会被系统拒绝。

          如果直接进入安装部署项目的操作的话,这样打包出来的安装包即便你以管理员权限运行安装了。但是,出现在桌面上的图标快捷键右键时候却没有“以管理员权限运行这一选项”,除非你直接切换到安装目录,右键exe文件以管理员权限启动~

          解决方法是,右键SetupForm项目,添加一个应用程序描述文件,如下图:

           

          直接点击添加即可,这时候打开文件会出现以下内容:

          

          想必不用多说了吧,把 level="asInvoker" 按调用者权限 改成 level="requireAdministrator"管理员权限就OK啦。

          建议将该文件拖入Properties目录下,如下所示:

          

 

        6、添加安装部署项目,右键解决方案后Add->New Project->Other Project Types->Setup and Deployment,输入MySetup后确定,结果如下:

                

        

         7、右键上图中的MySetup->View->File System,确定后如下图

            

            解释下上图中几个文件夹的意义:

            Application Folder——所有的项目的Release文件夹或Debug文件夹下的资源文件、可执行程序以及描述性文件等都需要放到这

            User‘s Desktop——用户桌面,在这下添加快桌面捷键,安装完了会在用户桌面产生快捷键

            User's Programs Menu——用户开始菜单,也是添加快捷键的地方,不过是在用户开始菜单,多个项目打包在一块的话,最好在该文件夹下建个文件夹

            好了,一步步来

           1)Application Folder 

            先是右键Application Folder->Add ->Project output,出现以下的窗口:

            

            由于只有一个项目,所以上面的下拉菜单中只有SetupForm一个选项,这儿我们选择Primary output,即可。

            当然,如果项目中的文件种类比较多,你也可以右键Application Folder->Add->File,然后浏览到项目的目录,将项目的Release或Debug文件夹里面的东西一股脑儿的添加进来~        

            2)User's Desktop

                 在右侧分割的窗口中右键->Create New Shortcut,在出现的窗口中双击Application Folder,选中刚刚添加那个Project Output文件即可。这时候安装到桌面时候快捷键图标还是默认图标,如果定制自己的图标的话,则需要在右键刚刚建立的快捷键,到属性窗口有个Icon属性,单击浏览,如下所示:

                     

                            单击Browse                                                                    Icon选择窗体

 

                

               双击Application Folder,如果在第 1)步骤中你添加了Icon文件的话,可以看到这些图标并可以选择,没有的话那就回到步骤1)添加呗~

            

              3)User's Programs Menu

              步骤同上,不过需要提醒的是多个项目打成一个安装包的时候,这下面最好先建个文件夹然后再添加那几个快捷键~

        

          8、到这一步,便可以右键MySetup后Build下,然后找到MySetup目录下的Release或者Debug文件下,便会有安装包啦~

 

          9、没完呢,要想添加个卸载程序怎么办呢?

               方法:在7中的第1)步骤,给Application Folder还得添加个东西,右键Application Folder->Add->File,然后在你的系统盘下的Windows/System32目录下添加 msiexec.exe,该文件是什么想必不用多说了把~添加了后,关键是在开始菜单下添加个删除的快捷键~于是,在7中的第3)步骤中添加的文件夹下,再创建一个快捷键,命名为Uninstall,如下:

                     

            

               

          

              右键Uninstall快捷键,打开其属性窗口,有个Arguments属性,如下所示:

                

             输入 /x 安装包的Productcode,这个ProductCode怎么获得呢,方法是左键单击MySetup安装包项目,然后点击属性窗口,会在该窗口找到Product code 属性,将该code复制到/x 后面即可,下图:

              

             这时候卸载功能已经添加进去了~

 

           10、还没完呢,如果想要安装程序在安装时候或者卸载的时候打开浏览器定位到指定的网址怎么办?

                 这个问题本人只在XP系统下解决了,win7系统下貌似不起作用,囧~期待园友的解决方案

                 说说在XP下怎么解决的把:

                 大家右键部署项目MySetup->View->Custom Actions 选项,如下所示:

                 

                出现Custom Actions编辑界面:

                 

                以上是程序安装部署到卸载的四个阶段,每个阶段都可以添加执行exe、dll或者vbs类型的命令,由此看来至少可以有三种方法实现~下面我便用后两种分别完成这个功能~

               1)VBS脚本

               新建个脚本,内容如下:

               Set openWeb=CreateObject("Wscript.shell") 

               openWeb.run("www.cnblogs.com/royenhome")

               保存为Internet.vbs,然后将该脚本添加到Application Folder,在Custom Actions编辑界面的相应阶段将该脚本添加进去~添加方法,呵呵,不用多说了把~

             2)dll方法

             在解决方案下新建个类库项目,取名为OpenWebDll,如图:

             

             删除class1.cs,然后给类库添加个Intaller类,如下所示:

             

              该类继承了Installer类,我们打开添加的类文件,在文件中override相应的方法,如希望在卸载时候打开网址,如下所示:

               

               Build下该类库,然后在MySetup的Application Folder文件夹下添加该项目的Project Output,然后切换到Custom Actions编辑界面的Uninstall添加该Output,同时确保Install下也添加该Output文件,否则安装会提示找不到xxx.installstate文件~具体操作见下图:

                      

             Build下就OK了

   

            11、至此,本文真的完了~ 

            

转载于:https://www.cnblogs.com/fcsh820/archive/2010/04/02/1703183.html

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

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

相关文章

项目实战报异常Exception及决绝方案

1、报LifecycleException,再配置一下jdk即可,然后再手动添加maven 解决方法: 然后,手动添加jar包 2、maven 项目,右键maven build启动项目的时候,报下面错误,没有在pom配置tomcat7插件 3、报找不到beans插件:更新一下项…

世界主要遥感卫星

世界主要遥感卫星QuickbirdSpot-4Spot-4法国“太阳神”1A神舟飞船神舟飞船“哈勃”望远镜RADASAT神舟飞船国际空间站国际空间站 SPOT2Shutsacn IKONOS CBERS-1JersSpot-4 “哈勃”望远镜 CBERS-1 Landsat 5美国“KH-11”侦察卫星 Spot-5 ERS Landsat 7OrbView-3 美国间谍卫星…

VMware配置linux网络步骤

1.我们要用桥接网络模式 2.设置桥接网络,VMnet1或者VMnet0就是桥接网络,我们用的就是桥接 VMnet8是NAT 在上面的图配置好ip和dns,要与windowss是同一个网段,网关一般不设置 3.设置linux网络里面设置这4项,记住dns可以不…

使用IntelliJ书签

这是有关IntelliJ的精美书签功能的快速帖子。 IntelliJ使您可以为单行代码添加书签。 将某行添加为书签后,您可以使用多种方法直接跳回到该行。 因此,最好在您经常使用的代码位置添加书签。 要创建一个新书签,只需在代码编辑器中按F11键。 …

ECMA-335 (CLI) 标准 读书笔记——总结CLI类型系统(上)

看到类型系统的概述时,就忍不住按图索骥,想搞清楚CLI如何定义的整个类型系统。于是翻遍了整个标准,将类型系统中最核心的、与运行平台密切相关的类型定义与说明整理了出来,以供理清思路。 标准的第四部指出,CLI的核心是…

centos7安装openjdk8

首先,打开openjdk安装官网 http://openjdk.java.net/install/ 输入安装命令: su -c "yum install java-1.8.0-openjdk" 装完之后会有提示版本跟安装的路径;在/usr/lib/jvm下可以查看到对应的名字,ls-l 配置环境变量&…

CSB文件上传漏洞 -->Day4(图片挂马)

22二号,冬至啦,深圳这边只有5(尊嘟好冷啊),写这篇文章的时候都已经是凌晨一点了,相信大部分的人都在温暖的被窝里面了吧!!(可怜的我,还得写writeup&#xff0…

微信小程序禁止刷新之后苹果端还可以下拉的问题

一、问题描述 最近在做一个小程序项目,需要禁止下拉刷新,于是在page.json里面添加了这段话 "enablePullDownRefresh":false 全局关闭下拉刷新,这段话确实禁止了下拉刷新,无论是安卓手机端还是苹果端,但是在…

调试OpenJDK

knowyourmeme.com/photos/531557 THX为mihn 有时调试Java代码还不够,我们需要逐步了解Java的本机部分。 我花了一些时间来实现JDK的正确状态,所以简短的描述可能对开始旅行的人很有用。 我将使用全新的OpenJDK 9! 首先,您必须通过…

算法题解:旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新…

函数的自执行,变量提升和函数提升

其实之前虽然刚开始学习JavaScript的时候经常看到function add(){}、var addfunction(){}、function(){}之类的这种写法,但是具体是什么叫什么却没有去考虑过这个问题…… function add(){}这种写法叫做函数声明 var addfunction(){}这种写法叫做函数表达式 fun…

Python之机器学习-sklearn生成随机数据

sklearn-生成随机数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from sklearn import datasets %matplotlib inline font FontProperties(fname/Library/Fonts/Heiti.ttc) 多标签分类数据…

外汇游乐场

介绍 F X Playground是基于JavaFX的原型制作工具或实时编辑器,它消除了编译Java代码的步骤。 这个概念并不是什么新鲜事物,例如在网络世界中,有许多HTML5 游乐场提供在线编辑器,使开发人员可以快速原型化或尝试各种JavaScript库。…

轻轻松松看懂Spring AOP源码

轻轻松松看懂Spring AOP源码 https://baijiahao.baidu.com/s?id1596466083334197175&wfrspider&forpc 如果对spring的核心容器和JDK动态代理、CGLIB有所了解,接下来再看spring AOP源码会比较容易。文中所有代码片段截图对应的spring版本是5.0。 本文内容曾…

2015年,Web 进入移动时代

最近 Morgan Stanley 发布了一份87页的报告,对 Internet 的未来趋势进行预测,报告显示,移动 Web 目前发展迅猛,包括 Kindle, iPhone, 智能手机,平板电脑,GPS 设备,游戏机在内的无线设备呈爆炸式…

vue2.0移除或更改的一些东西

一、vue2.0移除了$index和$key 虽然说现在很多文章说他们的代码是vue2.0版本的,但是有一些仔细一看,发现并不全是2.0版本,有些语法还是1.0的版本,比如这个$index,$key,这两个压根就不是2.0的写法,2.0早就把…

Java Keystore教程

目录 1.简介 2. SSL及其工作方式 3.私钥 4.公开证书 5.根证书 6.证书颁发机构 7.证书链 8.使用Java keytool的密钥库 9.密钥库命令 10.在Apache Tomcat上使用密钥库和自签名证书配置SSL 1.简介 我们谁没有去ebay,亚马逊买东西或他的个人银行帐户来检查。 您是否认为…

spring AOP源码分析(一)

spring AOP源码分析(一) 对于springAOP的源码分析,我打算分三部分来讲解:1.配置文件的解析,解析为BeanDefination和其他信息然后注册到BeanFactory中;2.为目标对象配置增强行为以及代理对象的生成&#xff…

attr和prop的区别以及在企业开发中应该如何抉择

attr和prop有很多相同的地方,比如都可以操作标签的属性节点,而且获取的时候都只可以获取到相同节点的第一个,例如这样: $(span).attr(class);和$(span).prop(class);都只能返回第一个span的class 同理做属性的修改和添加,删除也都…

从n个数里面找最大的两个数理论最少需要比较

答案是:nlogn-2 过程是这样的:甲乙比甲胜出,丙丁比丙胜出,最后甲丙比较,甲胜出。。。容易得出找出最大数为n-1次。现在开始找出第二大的数字:明显,第二大的数字,一定和甲进行过比较。…