(转)详解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,一经查实,立即删除!

相关文章

复合双重错误

总览 在上一篇文章中,我概述了为什么BigDecimal大部分时间都不是答案。 虽然可以构造double会产生错误的情况,但在BigDecimal遇到错误的情况下构造情况也一样容易。 BigDecimal更容易正确,但更容易出错。 轶事证据表明,初级开发人…

vue入门学习示例

鄙人一直是用angular框架的&#xff0c;所以顺便比较了一下。 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>vue实践</title>6 <script src"http://cdn.bootcss.…

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

1、报LifecycleException&#xff0c;再配置一下jdk即可&#xff0c;然后再手动添加maven 解决方法&#xff1a; 然后,手动添加jar包 2、maven 项目,右键maven build启动项目的时候&#xff0c;报下面错误&#xff0c;没有在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.设置桥接网络&#xff0c;VMnet1或者VMnet0就是桥接网络&#xff0c;我们用的就是桥接 VMnet8是NAT 在上面的图配置好ip和dns&#xff0c;要与windowss是同一个网段&#xff0c;网关一般不设置 3.设置linux网络里面设置这4项&#xff0c;记住dns可以不…

使用IntelliJ书签

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

用js写水仙花数

...js//输入一个三位数&#xff0c;水仙花数就是个位的三次方 十为的三次方 百位的三次方之和等于本身console.log(请输入一个三位数&#xff1a;);let a readline.question();if (a > 100 && a < 999) {if (parseInt(a / 100) ** 3 parseInt(a % 100 / 10) ** …

keras 打印模型图

keras中可以使用 from keras.utils import plot_model plot_model(model,to_filemodel_auth.png,show_shapesTrue) #show_shapesTrue可以把输入输出的shape一起打印 注意&#xff0c;最好是给每个层命名&#xff0c;命名好之后打印出来的才会带名字。程序运行的时候也有一定的指…

C# -- 多线程向同一文件写入

1. 多线程向同一文件写入Log. public delegate void AsyncLog(string str1, string str2);private void Test() {Console.WriteLine("Test Start...");for (int i 0; i < 100; i){AsyncLog asyLog1 new AsyncLog(WriteLog);asyLog1.BeginInvoke("EventActi…

Java中的命名参数

创建具有许多参数的方法是一个主要的缺点。 每当需要创建这样的方法时&#xff0c;就在空气中闻一闻&#xff1a;这是代码的味道。 强化单元测试&#xff0c;然后进行重构。 没有借口&#xff0c;没有屁股。 重构&#xff01; 使用构建器模式&#xff0c;甚至更好地使用Fluent …

CSS学习笔记3:选择器及优先级

CSS选择器的类型&#xff1a;标签选择器类选择器ID选择器全局选择器群组选择器后代选择器 1.标签选择器&#xff1a;以HTML的标签作为选择器&#xff0c;凡是选择了一个标签&#xff0c;那么所有这个标签的内容都是用了css样式用法很简单&#xff0c;直接在style中 标签{}即可声…

Eclipse开发,编译,打包常见问题总结------持续更新

在使用Eclipse开发&#xff0c;编译&#xff0c;打包常见问题如下&#xff1a; 1、 保证本地开发的客户端与服务端使用的jdk版本一致 2、 保证本地开发的客户端与服务端使用的依赖jar包版本一致&#xff08;比如本地thrift 客户端使用的libthrift版本和服务端使用的libthrift…

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

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

流口水可执行模型

可执行模型是对引擎处理的Drools最低级别模型的重新设计。 在当前的系列&#xff08;最多6.x&#xff09;中&#xff0c;可执行模型在过去的8年中有机地增长了&#xff0c;从未真正成为最终用户的目标。 建议那些希望以编程方式编写规则的人通过代码生成和目标drl来完成&#x…

centos7安装openjdk8

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

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

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

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

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

Win32 Application和Win32 Console Application的区别

Win32 Application和Win32 Console Application都是工作在32位Windows环境的程序。其中Win32 Application就是普通的常见的窗口应用程序&#xff0c;当然有的界面做得比较个性化&#xff0c;比如圆形的、不规则形状的……它们都是所谓的GUI(Graphics User Interface图形用户接口…

调试OpenJDK

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

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

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