欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

InnoSetup 使用

程序员文章站 2022-04-28 09:39:16
在进行 WPF 程序打包发布的时候如果对程序打包没有特别高的要求,InnoSetup 足以胜任普通的程序打包发布需求,它支持安装包加密,安装包升级安装,注册表操作等常规功能,以下脚本示例中有对常见操作进行相关说明。 [TOC] 简介 Inno Setup用Delphi写成,其官方网站同时也提供源程序 ......

目录

在进行 WPF 程序打包发布的时候如果对程序打包没有特别高的要求,InnoSetup 足以胜任普通的程序打包发布需求,它支持安装包加密,安装包升级安装,注册表操作等常规功能,以下脚本示例中有对常见操作进行相关说明。


简介

Inno Setup用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。

示例脚本

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

; 程序名称
#define MyAppName "hippieZhou"
; 程序版本号
#define MyAppVersion "2.2.0.5"
; 发布商名称
#define MyAppPublisher "hippieZhou, Inc."
; 发布商网址
#define MyAppURL "http://www.cnblogs.com/hippieZhou"
; 执行主程序名称
#define MyAppExeName "hippieZhou.exe"
[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{5597878A-538D-4164-B06A-2DC56C9ED8EE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\TerraVision
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; 程序打包输出目录
OutputDir=Build\
OutputBaseFilename=setup
SetupIconFile=Application.ico
Compression=lzma
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
ArchitecturesAllowed=x64
; 以64位架构模式进行安装
ArchitecturesInstallIn64BitMode=x64
; 以管理员模式运行
PrivilegesRequired=poweruser
; 安装程序安装密码
Password=123456
; 是否加密
Encryption=yes
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
; 指定主程序
Source: "Src\TerraVision.Shell.exe"; DestDir: "{app}"; Flags: ignoreversion
; 拷贝程序文件到指定目录
Source: "Src\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
; 检测当前程序是否在运行
[Code]
function IsAppRunning(const FileName : string): Boolean;  
var  
    FSWbemLocator: Variant;  
    FWMIService   : Variant;  
    FWbemObjectSet: Variant;  
begin  
    Result := false;  
    FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');  
    FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');  
    FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));  
    Result := (FWbemObjectSet.Count > 0);  
    FWbemObjectSet := Unassigned;  
    FWMIService := Unassigned;  
    FSWbemLocator := Unassigned;  
end;   
function InitializeSetup(): Boolean;
begin
  if IsAppRunning('hippiezhou.exe') then
  begin
    if MsgBox('程序正在运行,请先关闭后再进行安装!',mbInformation,MB_OK) = idYes then
    begin 
      Result := False;
    end
  end
  else
  begin
    Result := True;
  end
end;
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

相关参考