微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用inno Setup做应用程序安装包的示例脚本.iss文件

用innoSetup做应用程序安装包的示例脚本(.iss文件),具体要看innoSetup附带的文档,好象是pascal语言写的脚本。

示例1(应用程序.exe,客户端安装):

;{089D6802-6CD3-4E45-B8D5-AC9ED99CE371}; 脚本由 Inno Setup 脚本向导生成
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{5E012E21-42EE-4840-A000-35F9FAB886E9}
AppName=AIS_Client
AppVerName=AIS_Client
AppPublisher=公司名

DefaultDirName={pf}\AIS_Client
DefaultGroupName=AIS_Client
OutputBaseFilename=AIS_Client
Compression=lzma
SolidCompression=yes
SetupIconFile=D:\AIS\AIS 打包程序\AISGUI.ico
LicenseFile=C:\Documents and Settings\Administrator\桌面\许可协议.txt

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "D:\AIS\AIS 打包程序\AIS_client_exe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

[Icons]
Name: "{group}\AIS客户端"; Filename: "{app}\AISGUI.exe"
Name: "{group}\AIS客户端参数配置工具"; Filename: "{app}\ClientConfig.exe"
Name: "{group}\AIS服务设置工具"; Filename: "{app}\ServiceIPManage.exe"
Name: "{group}\AIS数据库参数配置工具"; Filename: "{app}\DataBaseConfig.exe"
;Name: "{group}\门控服务端"; Filename: "{app}\Access_server\SecurityWare.exe"
;在开始菜单->所有程序->伴网书童里添加一个删除快捷键。
Name: "{group}\卸载"; Filename: {uninstallexe}
Name: "{commondesktop}\AIS客户端"; Filename: "{app}\AISGUI.exe"; Tasks: desktopicon
;Name: "{commondesktop}\门控服务端"; Filename: "{app}\Access_server\SecurityWare.exe"; Tasks: desktopicon

[Run]
;Filename: "{app}\Access_server\SecurityWare.exe"; Description: "{cm:LaunchProgram,AIS}"; Flags: Nowait postinstall skipifsilent shellexec
Filename: "{app}\AISGUI.exe"; Description: "{cm:LaunchProgram,AIS}"; Flags: Nowait postinstall skipifsilent shellexec

[Registry]
;添加开机启动
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName:"ais"; ValueData:"{app}\AISGUI.exe";Flags:uninsdeletevalue

[Code]
{卸载时判断主程序是否在运行}
var
is_Sys,is_value: integer;
S_syschar,S_currentchar,S_current,S_sys,S,ResultStr : string;
I,CloseNum: Integer;
ErrorCode: Integer;
Guid_names,window_name : Tarrayofstring;
bool : Boolean;
const AppName='{5E012E21-42EE-4840-A000-35F9FAB886E9}_is1';

{程序安装前判断主程序是否在运行}
function InitializeSetup(): Boolean;
var
 ResultCode: Integer;
begin
 if RegGetSubkeyNames(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',Guid_names) then
 begin
 for I:=0 to GetArrayLength(Guid_names)-1 do
 begin
 S := Guid_names[i];
 //注册表中找到了此键
 if AppName=Guid_names[i] then
 begin
 bool := RegQueryStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+S,'UninstallString',ResultStr);
 //ResultStr := RemoveQuotes(ResultStr);
 if bool then
 begin
 if MsgBox('安装程序检测到当前计算机已经安装了AIS客户端。' #13#13 '您是否要卸载AIS客户端?', mbConfirmation,MB_YESNO) = IDYES then
 // ShellExec('',ExpandConstant('{app}\unins000.exe'),'',SW_SHOW,ewNowait,ResultCode);
 begin
 Exec(RemoveQuotes(ResultStr),ewWaitUntilTerminated,ResultCode);
 Result := false;
 end
 end
 break;
 end
 else
 //zdx 5.8 判断是否已经打开了一个安装程序
 begin
 if FindWindowbyWindowName('安装 - AIS_Client')<>0 then
 begin
 MsgBox('安装程序检测到有另外一个安装程序已经在运行了',mbConfirmation,MB_OK);
 Result := false;
 break;
 end
 end
 end;
 if I= GetArrayLength(Guid_names) then
 Result := true;
 end
 else
 Result := true;
end;

//当用户单击cancel的时候,删除掉拷贝到系统的文件
procedure CancelButtonClick(CurPageID: Integer; var Cancel,Confirm: Boolean);
begin
end ;

//卸载密码验证函数
function AskPassword(): Boolean;
var
 Form: TSetupForm;
 OKButton,CancelButton: TButton;
 PwdEdit: TPasswordEdit;
begin
 Result := false;
 Form := CreateCustomForm();
 try
Form.ClientWidth := ScaleX(256);
Form.ClientHeight := ScaleY(100);
Form.Caption := '密码验证';
Form.BorderIcons := [biSystemMenu];
Form.BorderStyle := bsDialog;
Form.Center;

OKButton := TButton.Create(Form);
OKButton.Parent := Form;
OKButton.Width := ScaleX(75);
OKButton.Height := ScaleY(23);
OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 50);
OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);
OKButton.Caption := '确定';
OKButton.ModalResult := mrOk;
OKButton.Default := true;

CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 50);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := '取消';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;

PwdEdit := TPasswordEdit.Create(Form);
PwdEdit.Parent := Form;
PwdEdit.Width := ScaleX(210);
PwdEdit.Height := ScaleY(23);
PwdEdit.Left := ScaleX(23);
PwdEdit.Top := ScaleY(23);

Form.ActiveControl := PwdEdit;

if Form.ShowModal() = mrOk then
begin
 Result := PwdEdit.Text = 'bw12345678';
 if not Result then
 MsgBox('密码错误',mb@R_785_4045@ion,MB_OK);
end;
 finally
Form.Free();
 end;
end;

//卸载程序的时候判断是否在运行
function InitializeUninstall(): Boolean;
begin
 begin
 //密码验证
 //Result := AskPassword();
 Result := TRUE;
// DelTree(ExpandConstant('{app}\*'),False,True,True);
 end
end;

//提示卸载完后重启计算机
function UninstallNeedRestart(): Boolean;
begin
 Result := False;
 DelTree(ExpandConstant('{app}\*'),True);
 DelTree(ExpandConstant('{app}'),True);
end;

示例2(windows service,服务端安装):

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{D0D0B722-C6F9-4A89-AB56-1417B9BD1400}
AppName=AIS_Server
AppVerName=AIS_Server
AppPublisher=公司名

DefaultDirName={pf}\AIS_Server
DefaultGroupName=AIS_Server
OutputBaseFilename=AIS_Server
Compression=lzma
SolidCompression=yes
SetupIconFile=D:\AIS\AIS 打包程序\AISGUI.ico
LicenseFile=C:\Documents and Settings\Administrator\桌面\许可协议.txt

[Files]
Source: "D:\AIS\AIS 打包程序\AIS_server_exe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Icons]
Name: "{group}\AIS服务端参数配置工具"; Filename: "{app}\ServiceConfig.exe"
;Name: "{group}\AIS客户端"; Filename: "{app}\AIS_client_exe\AISGUI.exe"
;Name: "{group}\门控服务端"; Filename: "{app}\Access_server\SecurityWare.exe"
;在开始菜单->所有程序->伴网书童里添加一个删除快捷键。
Name: "{group}\卸载"; Filename: {uninstallexe}
;Name: "{commondesktop}\AIS客户端"; Filename: "{app}\AIS_client_exe\AISGUI.exe"; Tasks: desktopicon
;Name: "{commondesktop}\门控服务端"; Filename: "{app}\Access_server\SecurityWare.exe"; Tasks: desktopicon

Nowait postinstall skipifsilent shellexec
;Filename: "{app}\AIS_client_exe\AISGUI.exe"; Description: "{cm:LaunchProgram,51); font-family:Arial; font-size:14px; line-height:26px"> [Registry]
;添加开机启动
;Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName:"bwqc"; ValueData:"{app}\MSrv.exe";Flags:uninsdeletevalue

arrayofstring;
bool : Boolean;
const AppName='{D0D0B722-C6F9-4A89-AB56-1417B9BD1400}_is1';

注册表中找到了此键
 if AppName = Guid_names[i] then
 begin
 bool := RegQueryStringValue(HKEY_LOCAL_MACHINE,ResultStr);
 //ResultStr := RemoveQuotes(ResultStr);
 if bool then
 begin
 if MsgBox('安装程序检测到当前计算机已经安装了AIS_Server。' #13#13 '您是否要卸载AIS_Server?',ResultCode);
 Result := false;
 end
 end
 break;
 end
 else
 //zdx 5.8 判断是否已经打开了一个安装程序
 begin
 if FindWindowbyWindowName('安装 - AIS_Server')<>0 then
 begin
 MsgBox('安装程序检测到有另外一个安装程序已经在运行了',MB_OK);
 Result := false;
 break;
 end
 end
 end;
 if I = GetArrayLength(Guid_names) then
 Result := true;
 end
 else
 Result := true;
end;

procedure CurStepChanged(CurStep: TSetupStep);//添加环境变量
var
 ResultCode: Integer;
begin
if CurStep = sspostInstall then
begin
 ShellExec('',ExpandConstant('{app}\ServiceInstall.exe'),
 '-is AIS_server "'+ ExpandConstant('{app}\AIS_server.exe')+'"',SW_HIDE,ResultCode);
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
 ResultCode: Integer;
begin
 if CurUninstallStep = usUninstall then
 begin
 ShellExec('',
 '-u AIS_server "'+ ExpandConstant('{app}\AIS_server.exe')+'"',ResultCode);
 end;
end;

//提示卸载完后重启计算机 function UninstallNeedRestart(): Boolean; begin  Result := False;  DelTree(ExpandConstant('{app}\*'),True);  DelTree(ExpandConstant('{app}'),True); end;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐