Inno Setup制作最简单的安装程序
目标就是【把exe程序放到制定目录,然后自动把工程需要的dll放到system32目录下,自动注册注册表。】
实现上述需求,用Inno Setup可以非常方便快捷实现。
安装Inno Setup。
点击新建。新建过程可以填写名字、选择图标等等……具体不多说。
之后自动生成了一个iss脚本。在此基础上简单改写,就可以实现我上面讲的需求。
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe" [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={{AC02AFFF-0E81-4E48-AF82-FB09D7BA9F3E}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
ArchitecturesInstallIn64BitMode=x64 [Languages]
Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files]
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "libmysql.dll"; DestDir: "{sys}";Check: not Is64BitInstallMode
Source: "libmysql.dll"; DestDir: "{sys}";Check: Is64BitInstallMode
Source: "htmlayout.dll"; DestDir: "{sys}";Check: not Is64BitInstallMode
Source: "htmlayout.dll"; DestDir: "{sys}";Check: Is64BitInstallMode
; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[Files]
下面填写要选择目录安装的MyProg.exe,以及需要自动安装到系统目录的两个dll。
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "libmysql.dll"; DestDir: "{sys}";Check: not Is64BitInstallMode
Source: "libmysql.dll"; DestDir: "{sys}";Check: Is64BitInstallMode
Source: "htmlayout.dll"; DestDir: "{sys}";Check: not Is64BitInstallMode
Source: "htmlayout.dll"; DestDir: "{sys}";Check: Is64BitInstallMode
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
如果需要注册注册表,需要在[Registry]下面添加。
我给出一个示例写法:
[Registry]
;Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{{6f45dc1e-5384-457a-bc13-2cd81b0d28ed}"; Flags: deletekey
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters\{{FF032558-38DA-4472-B969-31A636B7E5C7}"; ValueType: string; ValueName: "";ValueData:"SampleAllControlsCredentialProvider";Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{{FF032558-38DA-4472-B969-31A636B7E5C7}"; ValueType: string; ValueName: "";ValueData:"SampleAllControlsCredentialProvider";Flags: uninsdeletekey
Root: HKCR; Subkey: "CLSID\{{FF032558-38DA-4472-B969-31A636B7E5C7}"; ValueType: string; ValueName:"";ValueData:"SampleAllControlsCredentialProvider";Flags: uninsdeletekey
Root: HKCR; Subkey: "CLSID\{{FF032558-38DA-4472-B969-31A636B7E5C7}\InprocServer32"; ValueType: string; ValueName:"";ValueData:"SampleAllControlsCredentialProvider.dll";Flags: uninsdeletekey
Root: HKCR; Subkey: "CLSID\{{FF032558-38DA-4472-B969-31A636B7E5C7}\InprocServer32"; ValueType: string; ValueName:"ThreadingModel";ValueData:"Apartment";Flags: uninsdeletekey
写好脚本,进行编译,便生成了我们的setup.exe。

安装目录下,将exe程序以及dll和setup.exe并列放置。点击setup.exe启动安装程序。
效果:



安装之后,会发现dll已经自动放在system32目录下。
如果脚本里写了注册表配置的流程的话,注册表也会自动配置好。
上面只是最简单的例子。我工作暂时就用到这些。
更复杂的逻辑需要在[Code]下面写脚本。Inno Setup提供了一些例子,可以参考学习。
Inno Setup制作最简单的安装程序的更多相关文章
- 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤
原文 http://www.cnblogs.com/2356/archive/2009/10/27/1590565.html 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤 ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- 用Inno Setup制作WEB程序安装包
原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...
- [Azure DevOps] 使用 Inno Setup 制作桌面软件安装包
1. 桌面应用程序的 CI/CD 桌面应用程序的 CI/CD 过程和网站有一些不同,毕竟桌面应用程序的"部署"只是将安装包分发到目标位置,连应用商店都不用上,根据公司的管理流程可以 ...
- 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)
以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转) ; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCU ...
- 用inno Setup制作web项目安装包
http://www.cnblogs.com/xionghui/archive/2012/03/22/2411207.html 用inno Setup制作安装包 新建一个文件夹exambody,放ap ...
- 用Inno setup制作以管理员权限启动的安装包
inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...
- 使用inno setup 制作安装文件-demo1
; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "查体管理系统" # ...
- 解决Inno Setup制作中文安装包在非中文系统上显示乱码的问题
尼玛,好几个月没更新了.囧... 目前我司新的客户端开发已经接近尾声,该改的bug已经改完,该重构的地方也都差不多了.视觉效果也已经根据美工的样式改完了.所以,就差制作安装包了.正所谓万事俱备,只欠东 ...
随机推荐
- show binlog events 命令查看某个binlog日志内容
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]; 选项解析: IN 'l ...
- 免费的 C/C++ 编译&解释 器列表
摘自<C++编程网>,详细介绍请参考http://www.cpp-prog.com/2009/0520/118.html MicrosoftVisual C++ 2008 Express ...
- 今天犯了个小错误:_dataArray.count>1 和_dataArray.count>0搞混淆了
_dataArray.count>1 和_dataArray.count>0搞混淆了:当数据为一条时,条件不成立.应该_dataArray.count>=1 或者>0 ( ...
- 【a703】求逆序对
Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...
- Java数据类型转换问题
基本数据类型 整数型 byte --- 字节型 --- 1个字节 --- -27~27-1 -> -128~127 byte b1 = 25; byte b2 = 127; short --- ...
- Tomcat启动失败问题解决
1. 系统框架加载正常,但是Tomcat启动失败,报错如下: 2013-7-26 17:18:33 org.apache.catalina.core.StandardContext startInte ...
- TensorFlow 实战(四)—— tensor 的认识
tensorflow,即是 tensor flows,在 computation graph 中 flows(流动)的不是别人,正是 tensor: 1. tensor 基本属性 tensor 的名字 ...
- hexo主题选择和配置
之前用next主题,发现文章标题都是h2,不利于seo,想着通过改模板改成h1的,发现很繁琐.今天发现,通过下载指定版本的next后,标题自动是h1的. 参考网页https://notes.iissn ...
- 《⑨也懂系列:MinGW-w64安装教程》著名C/C++编译器GCC的Windows版本(MinGW-w64在安装的时候可以选择版本,有图,一步一步)
发布日期 2016年10月31日 分类 教程 标签 编程.软件 前言<⑨也懂系列:MinGW-w64安装教程>这篇文章由 rsreland (http://rsreland.net)于 2 ...
- telnet 的使用(ping 与 telnet)
基本用法 >> telnet localhost 23 // 23 表示 telnet 服务的端口号,不写端口号也可以,telnet 默认绑定的端口号就是 23 // netstat -a ...