• INNO Setup 使用笔记


    INNO Setup 使用笔记

    [Setup]

    AppName={#MyAppName}

    AppVerName={#MyAppVerName}

    AppPublisher={#MyAppPublisher}

    AppPublisherURL={#MyAppURL}

    AppSupportURL={#MyAppURL}

    AppUpdatesURL={#MyAppURL}

    DefaultDirName={pf}\My Programee

    DefaultGroupName={#MyAppName}

    InfoBeforeFile=D:\Inno Setup 5\Examples\Readme.txt        安装前的查看信息

    InfoAfterFile=D:\Inno Setup 5\Examples\Readme-German.txt  安装后的查看信息

    OutputBaseFilename=setup

    Compression=lzma

    SolidCompression=yes

     

    [Run]

    安装结束后要运行的选项

    Filename: "{app}\MyProg.EXE"

    (直接运行不提示,没有可选)

     

     

    [Icons](快捷方式)

    Name: "{commonprograms}\My Program"; Filename: "{app}\MyProg.exe"

    (在程序的快捷方式)

    Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"  

    (在桌面快捷方式)

     

    Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

    ({group}\My Program 快捷方式名 后面是对应的程序 )

     

     

    Commonprograms 程序菜单

    Userdesktop 桌面

    Group程序菜单的文件夹里

     

     

    [Files]

    Source: "MyProg.exe"; DestDir: "{app}"

    Source: "MyProg.hlp"; DestDir: "{app}";  Flags: isreadme

    Flags: isreadme 安装结束后要读的选项)

     

    Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
    Source: MyDll.dll; DestDir: {app}; Flags: ignoreversion;  (调用自定义的函数)

    [Registry]  注册表内容

    Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty

    Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey

    Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Name"; ValueData: "{code:GetUser|Name}"

    Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Company"; ValueData: "{code:GetUser|Company}"

    Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "DataDir"; ValueData: "{code:GetDataDir}"

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    [code] 自定义安装界面 不区分大小写

    [Setup]

    AppName=My Program

    AppVerName=My Program version 1.5

    CreateAppDir=no

    DisableProgramGroupPage=yes

    DefaultGroupName=My Program

    UninstallDisplayIcon={app}\MyProg.exe

    [Code]

    procedure WordButtonOnClick(Sender: TObject);

    var

      Word: Variant;

    begin

        MsgBox('WORD', mbInformation, mb_Ok);

    end;

    procedure CreateButton(ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent);

    begin

      with TButton.Create(WizardForm) do begin

        Left := ALeft;

        Top := ATop;

        Width := WizardForm.CancelButton.Width;

        Height := WizardForm.CancelButton.Height;

        Caption := ACaption;

        OnClick := ANotifyEvent;

        Parent := WizardForm.WelcomePage;

      end;

    end;

     

     

     procedure InitializeWizard();

    var

      Left, Top, TopInc: Integer;

    begin

      Left := WizardForm.WelcomeLabel2.Left;

      TopInc := WizardForm.CancelButton.Height + 8;

      Top := WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4*TopInc;

     

      CreateButton(Left, Top, '&Word...', @WordButtonOnClick); ;要先定义后使用

    end;

     

     

    页面变量

    TInputFileWizardPage

    TInputQueryWizardPage

    TInputOptionWizardPage

     
    //下一步按钮的函数
    function NextButtonClick(CurPageID: Integer): Boolean;
    begin
    Result := true;
    end

    function BackButtonClick(CurPageID: Integer): Boolean;
    begin
                 Result := true;

    end;


    文件操作:
    function RenameFile(const OldName, NewName: string): Boolean;
    function DeleteFile(const FileName: string): Boolean;
    function DelTree(const Path: String; const IsDir, DeleteFiles, DeleteSubdirsAlso: Boolean): Boolean

    创建页面
    function CreateInputDirPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String; AAppendDir: Boolean; ANewFolderName: String): TInputDirWizardPage;

    function CreateInputFilePage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String): TInputFileWizardPage;

    function CreateInputOptionPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String; Exclusive, ListBox: Boolean): TInputOptionWizardPage;

    function CreateInputQueryPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String): TInputQueryWizardPage;

    function CreateOutputMsgMemoPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption, AMsg: String): TOutputMsgMemoWizardPage;

    function CreateOutputMsgPage(const AfterID: Integer; const ACaption, ADescription, AMsg: String): TOutputMsgWizardPage;


    inno setup 技巧
    [code]
    procedure InitializeWizard();
    begin
    WizardForm.LICENSEACCEPTEDRADIO.Checked := true;
    end;
    2、自定义安装程序右上角图片大小
    [code]
    procedure InitializeWizard();
    begin
    WizardForm.WizardSmallBitmapImage.=150; //设置页眉图片的大小
    WizardForm.WizardSmallBitmapImage.left:=WizardForm.width-150; //设置左边页眉留出的空隙
    WizardForm.PAGENAMELABEL.=0; //设置标题文字显示的大小
    WizardForm.PAGEDESCRIPTIONLABEL.=0; //设置标题文字显示的大小
    end;
    或者
    //自定义安装向导小图片
    [code]
    procedure InitializeWizard();
    begin
    Wizardform.WizardSmallBitmapImage.left:= WizardForm.width-164; //自定义安装向导小图片显示位置
    WizardForm.WizardSmallBitmapImage.=164; //自定义安装向导小图片宽度
    Wizardform.PageNameLabel.= 495 - 164 -36; //这儿必须定义,数值根据图片宽度更改,显示软件名称的位置
    Wizardform.PageDescriptionLabel.= 495 - 164 -42; //显示页面信息的位置
    end;
    3、自定义BeveledLabel显示代码
    [code]
    procedure InitializeWizard();
    begin
    WizardForm.BeveledLabel.Enabled:=true; //允许显示
    WizardForm.BeveledLabel.Font.Color:=$00058451;; //显示颜色
    WizardForm.BeveledLabel.Font.Style := WizardForm.BeveledLabel.Font.Style + [fsBold]; //显示字体
    WizardForm.BeveledLabel.Left:=5; //显示位置
    end;
    4、自定义安装向导图片
    [code]
    procedure InitializeWizard();
    begin
    Wizardform.WELCOMELABEL1.left:= 18; //自定义欢迎页面标题1显示位置
    Wizardform.WELCOMELABEL2.left:= 18; //自定义欢迎页面标题2显示位置
    Wizardform.WizardBitmapImage.left:= WizardForm.width-164 //自定义安装向导图片显示位置(显示大小,此处为居右显示)
    end;
    5、显示出组件选择框
    [Types]
    Name: full; Description: 推荐
    Name: default; Description: 典型
    Name: custom; Description: 自定义; Flags: iscustom
    ;告诉安装程序这个类型是自定义类型。必须定义iscustom这个参数,才能显示出组件选择框
    6、定义[Messages]的颜色
    [code]
    procedure InitializeWizard();
    begin
    WizardForm.BeveledLabel.Enabled:= True;
    WizardForm.BeveledLabel.Font.Color:= clblue;
    end;
    7、不显示一些特定的安装界面
    [code]
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
    if PageID=wpReady then
    result := true;
    end;
    wpReady 是准备安装界面
    PageID查询 INNO帮助中的 Pascal 脚本: 事件函数常量
    预定义向导页 CurPageID 值
    wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished
    8、换行符号
    在 [Messages]   换行符号为%n
    在 MsgBox 中换行符号为 #13#10    //#13 为回车字符
    9、颜色代码
    (1)一个值形如 $bbggrr, 这里的 rr, gg 和 bb 指定了两位的亮度值(以十六进制表示)分别为红色,绿色和蓝色。
    (2)预定义的颜色名称:
    clBlack(黑色),clMaroon(暗红),clGreen(绿色),clOlive(橄榄绿),
    clNavy(深蓝),clPurple(紫色),clTeal(深青),clGray(灰色),
    clSilver(浅灰),clRed(红色),clLime(浅绿),clYellow(黄色),
    clBlue(蓝色),clFuchsia(紫红),clAqua(青绿),clWhite(白色)。
    10、inno代码注释符号
    ;      实例 ——   ; 分号
    //     实例 —— // 双斜杠 多用在code段
    { }    实例 —— {大括号    多用在code段}
    注释符号均在英文输入法状态下输入
    11、在运行卸载程序前显示弹出式消息
    [code]
    function InitializeUninstall(): Boolean;
    begin
    if MsgBox('', mbConfirmation, MB_YESNO) = IDYES then
    result:=true
    else
    result:=false;
    end;
    12、安装、卸载时判断是否程序正在运行,卸载完成时自动打开网页
    [code]
    var
    ErrorCode: Integer;
    IsRunning: Integer;
    // 安装时判断客户端是否正在运行  
    function InitializeSetup(): Boolean;  
    begin  
    Result :=true; //安装程序继续  
    IsRunning:=FindWindowByWindowName('东方宽频网络电视');  
    while IsRunning<>0 do 
    begin  
        if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then  
        begin  
          Result :=false; //安装程序退出  
          IsRunning :=0;  
        end else begin  
          Result :=true; //安装程序继续  
          IsRunning:=FindWindowByWindowName('东方宽频网络电视');  
        end;  
    end;  
    end;  
    // 卸载时判断客户端是否正在运行  
    function InitializeUninstall(): Boolean;  
    begin  
       Result :=true; //安装程序继续  
    IsRunning:=FindWindowByWindowName('东方宽频网络电视');  
    while IsRunning<>0 do 
    begin  
     
        if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then  
        begin  
          Result :=false; //安装程序退出  
          IsRunning :=0;  
        end else begin  
          Result :=true; //安装程序继续  
          IsRunning:=FindWindowByWindowName('东方宽频网络电视');    
        end;  
    end;  
    end;  
    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);  
    begin  
    case CurUninstallStep of  
        usUninstall:    
          begin // 开始卸载  
          end;  
        usPostUninstall:  
          begin      // 卸载完成  
            // MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK);  
            // ...insert code to perform post-uninstall tasks here...  
            ShellExec('open', 'http://www.dreams8.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);  
          end;  
    end;  
    end;  
    13、 删除文件和删除文件夹
    //删除文件    用 DeleteFile 只能删除一个文件,不能使用通配符来删除多个文件
    DeleteFile(ExpandConstant('{app}\abc.exe'));
    //删除所有文件及文件夹
    DelTree(ExpandConstant('{app}'), True, True, False);
    14、BorderStyle
    TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin);
    无边界式(bsNone) ,单边固定式(bsSingle),双边可变式(bsSizeable),对话框式(bsDialog)
    15、if   else
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
    ResultCode: Integer;
    begin
    Result := True;
    if (CurPageID = wpSelectDir) then
    begin
    MsgBox('AAAA', mbInformation, MB_OK);
    end
    else
    begin
    MsgBox('BBBB', mbInformation, MB_OK);
    end;
    end;
    16、安装结束界面增加“设为首页”选项
    [Tasks]
    Name: changestartpage; Description: "设置vistaqq为默认主页"
    [Registry]
    Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\Main"; ValueType: string; ValueName: "Start Page"; ValueData: "http://www.vistaqq.com"; tasks: changestartpage
    17、添加“关于”和网站链接按钮
    [Code]
    procedure URLLabelOnClick(Sender: TObject);
    var
    ErrorCode: Integer;
    begin
    ShellExec('open', 'http://www.vistaqq.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
    end;
    procedure AboutButtonOnClick(Sender: TObject);
    begin
    MsgBox(#13 'Vista 状态条风格盘符' #13 #13'本软件由jinn制作,希望各位登陆中天VIP工作室!' #13#13 '版权所有 (C) 中天VIP工作室', mbInformation, MB_OK);
    end;
    var
        AboutButton, CancelButton: TButton;
        URLLabel: TNewStaticText;
    procedure InitializeWizard();
    begin
    { Create the pages }
    WizardForm.PAGENAMELABEL.Font.Color:= clred;
    WizardForm.PAGEDESCRIPTIONLABEL.Font.Color:= clBlue;
    WizardForm.WELCOMELABEL1.Font.Color:= clGreen;
    WizardForm.WELCOMELABEL2.Font.Color:= clblack;
       CancelButton := WizardForm.CancelButton;
         AboutButton := TButton.Create(WizardForm);
         AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
         AboutButton.Top := CancelButton.Top;
         AboutButton.Width := CancelButton.Width;
         AboutButton.Height := CancelButton.Height;
         AboutButton.Caption := '&About';
         AboutButton.OnClick := @AboutButtonOnClick;
         AboutButton.Parent := WizardForm;
    URLLabel := TNewStaticText.Create(WizardForm);
        URLLabel.Caption := '中天VIP工作室';
        URLLabel.Cursor := crHand;
        URLLabel.OnClick := @URLLabelOnClick;
        URLLabel.Parent := WizardForm;
        { Alter Font *after* setting Parent so the correct defaults are inherited first }
        URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
        URLLabel.Font.Color := clBlue;
        URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
        URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
    end;
    18、去掉安装程序左上角“关于安装程序”的代码
    procedure InitializeWizard();
    begin
    WizardForm.BorderIcons:= [biMinimize];
    end;
    procedure CurPageChanged(CurPage: Integer);
    begin
    if CurPage=wpWelcome then
    WizardForm.BorderIcons:= [biSystemMenu, biMinimize];
    end;
    或者
    procedure InitializeWizard();
    begin
    WizardForm.BORDERICONS := [biHelp, biSystemMenu, biMinimize];
    end;
    19、自定义BeveledLabel文字
    [Messages]
    BeveledLabel=中天VIP工作室
    20、自定义安装程序界面左上角“安装”文字
    [message]
    SetupAppTitle=需要的字
    SetupWindowTitle=需要的字
    21、自定义安装程序版本号
    VersionInfoVersion=1.1
    VersionInfoTextVersion=1.1
     

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/ahuo/p/819726.html
Copyright © 2020-2023  润新知