一个Inno Setup创建安装包的例子

Posted mach-he

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Inno Setup创建安装包的例子相关的知识,希望对你有一定的参考价值。

环境说明

  • Inno Setup 版本:5.5.9

特色说明

[1] 安装前检测应用是否运行,若运行则提示关闭(未借助额外dll,使用系统命令tasklist)
[2] 针对安装环境缺少Microsoft Visual C++ 2015(==请自助修改==)的环境自动执行安装

制作安装包

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyGroupName "**软件\软件名称"
#define MyAppName "软件名称"  
#define MyUninstallAppName "卸载软件名称"
#define MyAppVersion ""  
#define MyAppPublisher ""  
#define MyAppURL ""  
#define MyAppExeName "" 
#define MyAppDir "" 
#define MyAppSetupDir ""

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId=
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyGroupName}
DisableProgramGroupPage=yes
OutputDir={#MyAppSetupDir}
OutputBaseFilename=setup
SetupIconFile={#MyAppDir}\synchelper.ico
Compression=lzma
SolidCompression=yes

[Languages]
;Name: "English"; MessagesFile: "compiler:Default.isl"
Name: "Chinese"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"

[Tasks]
Name: "desktopIcon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
;Name: "quickLaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone

[Files]
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
Source: "{#MyAppDir}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"
Name: "{group}\{#MyUninstallAppName}"; Filename: "{uninstallexe}"  
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
;Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
;;安装后检测是否安装运行库
Filename: "{app}\vcredist\vcredist_x86.exe"; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "正在安装Microsoft Visual C++ 2015 Redistributable(x86) - 14.0.24125..."; Check:  IsNeedInstallVC14;

;;启动软件
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent;

[Code]
//全局变量
var
 vc14Missing: Boolean;

//软件是否运行
function IsAppRunning(const FileName : string): Boolean;
var 
ProcessRunState :Integer;
begin
    result := false;
    Exec('cmd.exe', Format('/C tasklist|findstr /i %s',[FileName]), '', SW_HIDE,ewWaitUntilTerminated, ProcessRunState); 
    if (ProcessRunState = 0) then
    begin
        result := true;
    end;
end;
 
//判断函数
function IsNeedInstallVC14(): Boolean;
begin
 Result := vc14Missing;
end;

//启动前检测
function InitializeSetup(): Boolean;
var 
VCRuntime14RegPath :string;
begin
    if ( IsAppRunning('{#MyAppExeName}') ) then
    begin
        MsgBox('安装程序检测到 {#MyAppName} 正在运行!请先选择退出,再尝试安装!', mbCriticalError, MB_OK);
        result := false;
    end else
    begin
        VCRuntime14RegPath:='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{69BCE4AC-9572-3271-A2FB-9423BDA36A43}';
        if RegKeyExists(HKLM, VCRuntime14RegPath) = false then
        begin
            vc14Missing := true;
        end;
        result := true;
    end
end;

//卸载前检查
function InitializeUninstall(): Boolean;
begin
    result := true;
    if ( IsAppRunning('{#MyAppExeName}') ) then
    begin
        MsgBox('安装程序检测到 {#MyAppName} 正在运行!请先选择退出,再尝试卸载!', mbCriticalError, MB_OK);
        result := false;
    end;
end;
  • 注意

[1] 例子中检查和安装vc-runtime仅针对x86

以上是关于一个Inno Setup创建安装包的例子的主要内容,如果未能解决你的问题,请参考以下文章

inno setup 创建桌面快捷方式的代码

Inno Setup卸载时注销bho

解决Inno Setup制作安装包无法创建桌面快捷方式的问题

如何使用 Inno Setup 创建桌面图标

在安装过程中使用 Inno Setup 删除另一个未随 Inno Setup 安装的应用程序

inno setup如何打包超过2G的东西