zoukankan      html  css  js  c++  java
  • InnoSetup打包exe安装应用程序,并添加卸载图标 转

    http://blog.csdn.net/guoquanyou/article/details/7445773

    InnoSetup真是一个非常棒的工具.给我的印象就是非常的精干.所以,该工具已经一步步的把我的InstallerVise代替了.InnoSetup最棒的在于他的脚本语言,完全的pascal语法,你可以在学习他的时候省去很多麻烦.
    用InnoSetup的wizard已经可以完成很多的工作了,但是并不是十全十美.许多地方要你自己订定,这就用到脚本了.

    默认的打包好的程序在程序菜单中没有卸载图标,这一点很不爽.你要卸载程序要通过添加/删除程序来完成,这太麻烦了.其实只需要几步就可以完成这一工作.

    ; 脚本由 Inno Setup 脚本向导 生成!
    ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!


    #define MyAppName "青岛招聘网"
    #define MyAppVersion "1.5"
    #define MyAppPublisher "青岛招聘网"
    #define MyAppURL "http://www.qk12333.com/"
    #define MyAppExeName "Client.exe"

    [Setup]
    ; 注: AppId的值为单独标识该应用程序。
    ; 不要为其他安装程序使用相同的AppId值。
    ; (生成新的GUID,点击 工具|在IDE中生成GUID。)
    AppId={{E8EA32EC-AE79-4184-A374-4356A6BDBC16}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}{#MyAppName}
    DefaultGroupName={#MyAppName}
    OutputBaseFilename=setup
    Compression=lzma
    SolidCompression=yes
    Uninstallable=yes
    UninstallDisplayName=卸载{#MyAppName}


    [Languages]
    Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

    [Files]
    Source: "C:Client.rootClientinDebugClient.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:Client.rootClientinDebugAxInterop.WMPLib.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:Client.rootClientinDebugClient.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:Client.rootClientinDebugClient.pdb"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:Client.rootClientinDebugInterop.WMPLib.dll"; DestDir: "{app}"; Flags: ignoreversion
    ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
    [code]
      function InitializeSetup: Boolean;
      var Isbl: boolean;         //声明变量
        var Isstr: string;
        //全局变量
        var MyProgChecked: Boolean;
      var Path:string ;
             ResultCode: Integer;
      begin
        if RegKeyExists(HKLM, 'SOFTWAREMicrosoft.NETFrameworkpolicyv2.0') then
          begin
             Result := true;
         end
        else
          begin
            if MsgBox('系统检测到您没有安装.Net Framework2.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes then
              begin
                   Path := ExpandConstant('{pf}Internet Exploreriexplore.exe');
                   Exec(Path, 'http://data.zhiluo.net/soft/Microsoft_DotNet2.0.rar', '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
                   MsgBox('请安装好.Net Framework2.0环境后,再运行本安装包程序!',mbInformation,MB_OK);
                   Result := false;
               end
            else
               begin
                   MsgBox('没有安装.Net Framework2.0环境,无法运行程序,本安装程序即将退出!',mbInformation,MB_OK);
                   Result := false;
               end;
          end;

          begin       //开始
            Isbl := true;             //变量赋值  注意下方的“SOFTWAREIT_soft”要与安装时创建的注册表信息一致
            Isstr := '欢迎';
            if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWAREIT_soft', 'config') then
              begin
                MsgBox('软件已安装过,如果需要重新安装,请先卸载再安装!',mbConfirmation, MB_OK);
                isbl := false;
              end
            else
              begin
              //MsgBox('无值',mbConfirmation, MB_OK);
              isbl := true;
              end;
              Result := Isbl;
          end;       //结束
      end;

    [Icons]
    Name: "{group}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"
    Name: "{commondesktop}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"; Tasks: desktopicon
    Name: "{group}卸载 {#MyAppName}"; Filename: "{uninstallexe}"

    [Run]
    Filename: "{app}{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

  • 相关阅读:
    C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
    C#.NET常见问题(FAQ)-如何不显示窗口的关闭按钮
    C#.NET常见问题(FAQ)-如何判断两个类是否相同类型
    C#.NET常见问题(FAQ)-如何判断某个字符是否为汉字
    C#.NET常见问题(FAQ)-如何改变字符串编码
    C# 多线程编程 ThreadStart ParameterizedThreadStart
    C# 线程调用主线程中的控件
    LINQ to XML 编程基础
    LINQ to XML 建立,读取,增,删,改
    WinForm 自动完成控件实例代码简析
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5839108.html
Copyright © 2011-2022 走看看