概述
- 大家可能平时深有体会,电脑隔一段时间就会被安装几个流氓软件。但我们明明没有手动去安装,这些是什么时候偷偷安装上去的。主要还是由于,我们安装某些软件时,它会捆绑安装一些软件,还有就是,点击一些钓鱼网站,会自动下载安装一些软件。但这些软件的共同点都是没有安装界面,也就是实现了静默安装。所以安装时你根本不会察觉到。
- 本文章就以打包工具inno setup为例,介绍下如何制作一个不带安装界面的静默安装包。
- 当然不是鼓励大家去做这种流氓软件。在实际工作中,确实有用户是有这种静默安装需求的。
Inno setup介绍
- 基本介绍:Inno setup打包软件入门
- 事件函数
- function ShouldSkipPage(PageID: Integer): Boolean;
- 调用这个事件函数确定是否在所有页面或不在一个特殊页面(用 PageID 指定)显示。如果返回 True,将跳过该页面;如果你返回 False,该页面被显示。
- 只有调用这个函数并且返回一个true,静默安装的时候才会自动安装结束,否则会停在某个安装过程中无法继续。
- procedure InitializeWizard();
- 在启动时使用该事件函数来改变向导或向导页面。也就是向导窗体生成前会调用这个函数,我们可以在这个函数中隐藏向导窗体边框。
- procedure CurPageChanged(CurPageID: Integer);
- 在新向导页面(用 CurPageID 指定)显示后调用。可以在这个函数中设置窗体大小为0,安装界面就不显示了。
打包脚本
#define MyAppName "静默安装测试包"
[setup]
; 安装应用程序的标题
AppName="静默安装测试包"
; 安装应用程序版本号
AppVersion = "v1.0"
; 默认安装目录
DefaultDirName={pf}
; 安装程序将不显示选择目标位置向导页面
DisableDirPage=yes
; 控制面板中显示
CreateUninstallRegKey=yes
; 编译输出文件夹
OutputDir=F:\study\inno setup\InnoSetup\output
; 编译后的安装包文件名
OutputBaseFilename="csDemo"
;卸载程序路径
UninstallFilesDir={app}\csDemo
; 不显示开始菜单文档向导页面
DisableProgramGroupPage=yes
; 安装程序将不显示"欢迎"向导页面。
DisableWelcomePage=yes
; 默认包含卸载程序在安装程序中
Uninstallable=yes
[Icons]
;创建卸载程序
Name: "{group}\卸载"; Filename: "{app}\csDemo\unins000.exe"
[Files]
Source: "F:\study\inno setup\InnoSetup\input\csDemo\*"; DestDir: "{app}\csDemo"
[code]
procedure CurPageChanged(CurPageID: Integer);
var ResultCode: Integer;
Version: TWindowsVersion;
begin
//安装过程界面无法隐藏,所以设置窗口高度和宽度为0
WizardForm.ClientWidth := ScaleX(0)
WizardForm.ClientHeight := ScaleY(0)
if CurPageID = wpWelcome then
WizardForm.NextButton.OnClick(WizardForm);
if CurPageID >= wpInstalling then
WizardForm.Visible := False
else
WizardForm.Visible := True;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
result := true;
end;
procedure InitializeWizard();
begin
//边界隐藏
WizardForm.BorderStyle := bsNone;
end;
[UninstallRun]
; 卸载前杀掉进程
Filename: taskkill;Parameters:"/t /f /im testApp.exe";Flags: runhidden
[UninstallDelete]
; 卸载后删除安装目录下所有文件
Type: filesandordirs; Name: "{app}\csDemo"