使用Inno Setup制作安装包

本文详细介绍了如何使用InnoSetup制作桌面程序的安装包,包括配置文件的编写、资源打包、注册表项设置及快捷方式创建等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装包一般是桌面程序使用的较多,当然很多服务端的部署也可以制作安装包以方便部署,总之就是将部署所需要的所有资源打包在一个可执行文件里,在安装的时候解压复制到指定的安装目标,并配置相应需要的一些环境,创建快捷方式等等。

一般一个安装包在执行安装大致的过程分为几个步骤:

1.安装之前的一些清理工作,比如关闭一些正在执行的程序,清理注册表等

2.解压并复制资源到指定的位置

3.注册一些注册表项

4.创建一些快捷方式

5.安装完成之后的清理工作将一些安装过程的辅助文件删除

6.启动程序或者打开一些说明文档之类的

7.结束

Inno Setup是声名试的写法,下面是个例子

[Setup]
AppName=全栈工程师
AppVersion=v1.12
AppCopyright=全栈工程师
AppPublisher=全栈工程师
DefaultDirName={pf}\chrome
DefaultGroupName=全栈工程师
UninstallDisplayIcon={app}\unins000.exe
UninstallDisplayName=卸载全栈工程师
Uninstallable=true
OutputBaseFilename=全栈工程师v1.12
Compression=lzma                            
SolidCompression=yes           
ArchitecturesInstallIn64BitMode=x64
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableWelcomePage=yes
PrivilegesRequired=admin
CloseApplications=yes
CloseApplicationsFilter=chrome.exe
ChangesEnvironment=yes

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

[Files]
Source: "app\Chrome\*"; DestDir: "{app}\Chrome"; Flags: ignoreversion recursesubdirs;
Source: "app\shared\*"; DestDir: "{app}\shared"; Flags: ignoreversion recursesubdirs;
Source: "app\msvcp100.dll"; DestDir: "{sys}"; Flags:onlyifdoesntexist; 
Source: "app\msvcr100.dll"; DestDir: "{sys}"; Flags:onlyifdoesntexist;
Source: "app\msvcp100.dll"; DestDir: "{syswow64}";Flags:64bit onlyifdoesntexist; Check: Is64BitInstallMode;
Source: "app\msvcr100.dll"; DestDir: "{syswow64}";Flags:64bit onlyifdoesntexist;  Check: Is64BitInstallMode;

[Icons]
Name: "{group}\卸载"; Filename:"{app}\unins000.exe";
Name: "{group}\全栈工程师";Comment: "全栈工程师"; Filename: "{app}\StartChrome.exe";
Name: "{commondesktop}\全栈工程师";Comment: "全栈工程师"; Filename: "{app}\StartChrome.exe";
      
[Run]
Filename: "{app}\StartChrome.exe"; WorkingDir:"{app}"; Description: "启动 全栈工程师";Flags: postinstall nowait skipifsilent runascurrentuser;

[InstallDelete]
Type:"filesandordirs";Name:"{userappdata}\ChromeProfile"

[UninstallRun]

[UninstallDelete]
Type:"filesandordirs";Name:"{app}"
Type:"filesandordirs";Name:"{group}"
Type:"filesandordirs";Name:"{commondesktop}\全栈工程师.exe"
Type:"filesandordirs";Name:"{userappdata}\ChromeProfile"

[Registry]
Root: HKLM; Subkey:"SYSTEM\CurrentcontrolSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GOOGLE_API_KEY"; ValueData: " ";Flags:uninsdeletevalue noerror;
Root: HKLM; Subkey:"SYSTEM\CurrentcontrolSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GOOGLE_DEFAULT_CLIENT_ID"; ValueData: " ";Flags:uninsdeletevalue noerror;
Root: HKLM; Subkey:"SYSTEM\CurrentcontrolSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GOOGLE_DEFAULT_CLIENT_SECRET"; ValueData: " ";Flags:uninsdeletevalue noerror;

[code]
function KillApp():Boolean;
var ErrorCode: Integer;
begin
  //

  ShellExec('open','taskkill.exe','/f /im iexplore.exe','',SW_HIDE,ewNoWait,ErrorCode);
  ShellExec('open','tskill.exe',' iexplore.exe','',SW_HIDE,ewNoWait,ErrorCode);
  ShellExec('open','taskkill.exe','/f /im ZhuDongFangYu.exe','',SW_HIDE,ewNoWait,ErrorCode);
  ShellExec('open','tskill.exe',' ZhuDongFangYu.exe','',SW_HIDE,ewNoWait,ErrorCode);
  
  Result := true;
  //
end;

function InitializeSetup():Boolean;
begin
    Result := KillApp();
end;
function InitializeUninstall():Boolean;
begin
    Result := KillApp();
end;

新建个文件夹,将上面的例子的文本保存为一个扩展名为.iss的文件,将需要部署的文件都放在一个app的文件夹里,如下图:

image

来看看几个关键的地方基本概念

[Setup]

是安装的一些基本配置,从变量名大致都能理解是什么意思,其中几个关键点解释一下

DefaultDirName={pf}\chrome

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值