zoukankan      html  css  js  c++  java
  • VS打包部署图文具体步骤及程序防卸载的制作(password验证卸载)

    1、  在vs2010 选择“新建项目->“其它项目类型”->“ Visual StudioInstallerà

    “安装项目”:

     

    命名为:Setup321 。

    这是在VS2010中将有三个目录,

    1.“应用程序目录”表示要安装的应用程序须要加入的文件。

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

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

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

     

    加入的文件通常是已经编译过 应用程序的debug文件夹下的文件

     

    假设debug 以下有子目录 则须要“加入目录”,比如:data

                       

    然后把相应的子文件中的内容加入到此目录中;

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


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

     

         选择系统必备:

         

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

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


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

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


    然后VS2010会创建例如以下文件:


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


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

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

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

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


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

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

    把InstallAllUsers 设置为True 。

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

    在安装时会默觉得“不论什么人”,否则默觉得“仅仅有我”)


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


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

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

     


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



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

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

    B. “用户的‘程序’菜单” 中加入一个目录。命名为:“串口程序”

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

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

    在“应用程序目录”中加入:C:WindowsSystem32Msiexec.exe(这里要说明一下,假设不须要在卸载方面做手脚就直接加入C:WindowsSystem32Msiexec.exe,假设须要放卸载或者password验证卸载,此处加入的EXE文件就是此文章后面讲到的防卸载程序运行后产生的EXE文件,请分清!。!。!

    !。!




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


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


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


    6、  完毕以上步骤,就能够生成解决方式了。


    在debug目录中就是我们须要的安装包。



    7、  生成解决方式后,

    8、  安装完


    9、在開始菜单中有“串口程序”的目录,里面有我们创建的两个快捷方式;

         



    原文链接:http://wenku.baidu.com/view/b93cebd433d4b14e852468bf.html?re=view   十分感谢这位作者的贡献。本文也是借用了他的文章的部分截图,我也是參考了他的文章才完毕了这一套流程,在他的基础上有了我的创新和扩展,再次感谢。!


    接下来是我的创新扩展。是本文的核心内容:


    我之前在制作一款控制软件时遇到了这样一个问题:要防止卸载。所以就涉及到要写一个卸载程序来控制卸载,本来还打算流氓一点防卸载呢,客户要求是输入正确password就能够卸载,可是之前没有研究过这方面的东西就非常头疼,然后就開始研究注冊表,研究操作系统是调用什么程序来实现卸载的,经过了几天的研究,最终有了收获,就是仅仅要我们写一个卸载程序。然后让系统在卸载时使用我们自己的卸载程序来卸载,我们就能够控制卸载了。上代码吧,


    这里为了演示,仅仅是写了一个非常easy的程序。我就不连接数据库进行password验证了。仅仅为了说明问题。假设有须要,大家在依据自己需求去改,相信大家都会连接,这里须要注意的是这个码一定不要填错了,这个就是之前你在打包部署时的productcode,是一个程序唯一的标示,假设写错了非常有可能就把别的程序卸载了,这个跟之后注冊表里的东西有关系,大家要小心设置。这样一个简单的防卸载程序就写完了,至于怎么放到部署包里。在之前加入卸载程序时,把卸载程序运行完产生的EXE文件当里边即可,就不须要加入Msiexec.exe了,这样打包生成完之后还没有完。你仅仅是把自己的卸载打包部署了。可是程序安装完之后。系统默认调用的是系统卸载程序,这就须要我们去改动注冊表,让系统调用我们的卸载程序,这里我仅仅做手动改动,至于怎么用程序写代码改动就不说了,网上一百度一大堆,

    打开注冊表:

    找到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall程序名字 ,程序名字就是这个码,然后打开这个目录,看到这个:

            首先我们将WindowsInstaller 删除,然后将uninstallstring 改动为你的卸载程序所在的位置。直接写文件位置即可。这样你在打开控制面板卸载程序时。系统调用的就是自己的卸载程序了。就能够做到防卸载。

          至此。基本讲诉完毕了,可能一些细节做得不是非常具体,大家能够依据自己的需求去改动程序,希望会对大家有帮助,假设有说错了的地方请大家批评指正,谢谢

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6908913.html
Copyright © 2011-2022 走看看