zoukankan      html  css  js  c++  java
  • Inno Setup 安装inf文件的一个例子

     INF安装例子


    [Setup]
    ; 注意: AppId 的值是唯一识别这个程序的标志。
    ; 不要在其他程序中使用相同的 AppId 值。
    ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID)
    AppId={{DC1559D2-A4CC-471F-8FDF-45F4278AFAEA}
    AppName=我的程序
    AppVerName=我的程序 1.5
    AppPublisher=我的公司
    AppPublisherURL=http://www.example.com/
    AppSupportURL=http://www.example.com/
    AppUpdatesURL=http://www.example.com/
    DefaultDirName={pf}我的程序
    DefaultGroupName=我的程序
    OutputBaseFilename=setup
    Compression=lzma
    SolidCompression=yes

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

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

    [Files]
    Source: "test.inf"; Flags: dontcopy

    [code]
    //安装inf的函数
    function InstallInf(const InfFile, InfSection: string): Boolean;
    var
      ResultCode: Integer;
    begin
      if Exec(ExpandConstant('{sys} undll32.exe'), 'advpack.dll,LaunchINFSection '+AddQuotes(ExpandConstant(InfFile))+','+ExpandConstant(InfSection), ExpandConstant('{src}'), SW_HIDE, ewWaitUntilTerminated, ResultCode) then
      {如果上面的代码有问题,就改用下面这行}
    //  if Exec(ExpandConstant('{sys} undll32.exe'), 'setupapi,InstallHinfSection '+ExpandConstant(InfSection)+' 132 '+AddQuotes(ExpandConstant(InfFile)), ExpandConstant('{src}'), SW_HIDE, ewWaitUntilTerminated, ResultCode) then
        Result:= (ResultCode = 1); {假设正常安装的返回代码是1的话}
    end;

    //定义按钮和要执行的操作
    procedure MyButtonOnClick(Sender: TObject);
    var
      tmpinf, srcinf: String;
      bbb: Boolean;
    begin
      tmpinf:= ExpandConstant('{tmp} est.inf');
      srcinf:= ExpandConstant('{src} est.inf');
      ExtractTemporaryFile('test.inf'); //解压文件
      if RenameFile(tmpinf, srcinf) then  //移动文件到程序所在目录
        if InstallInf(srcinf, 'DefaultInstall') then
        //ShellExec('Install', srcinf, '', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, ResultCode) then  //安装inf
          bbb := True;
      //处理返回代码
      if bbb then
        MsgBox('安装成功!!', mbInformation, MB_OK) else
      begin
        MsgBox('安装失败!!', mbCriticalError, MB_OK);
      end;
      DeleteFile(srcinf);
    end;

    //创建按钮
    procedure InitializeWizard();
    var
      MyButton: TButton;
    begin
      with WizardForm do
      begin
        MyButton := TButton.Create(WizardForm);
        with MyButton do begin
          Left := ScaleX(208);
          Top := ScaleX(192);
          Width := ScaleX(75);
          Height := ScaleX(23);
          Caption := '安装inf';
          OnClick := @MyButtonOnClick; //按钮点击事件
          Parent := WizardForm;
        end;
      end;
    end;


    procedure CurPageChanged(CurPageID: Integer);
    var
      ResultCode: Integer;
    begin
      if CurPageID = wpWelcome then
        WizardForm.NextButton.Enabled:= False; //禁用下一步按钮
    end;

  • 相关阅读:
    后台菜单权限设计实现思路
    Laravel创建模型到指定目录
    laravel框架加载静态资源注意事项
    mysql 快速生成测试数据小技巧
    Lavaral基础实践——文件上传报错
    PHP常量详解:define和const的区别
    开发常用的工具网站
    windows下用navicat远程链接虚拟机Linux下MySQL数据库(测试可行)
    java异常处理机制思路总结
    记录一些比较容易含糊的概念
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/6549245.html
Copyright © 2011-2022 走看看