装载-使用 inno -setup制作平台环境安装包

       业务需求:需要把开发的程序部署到任意一台windows上运行,操作简单,只需要点下一步,就能安装,而且第一次初始化后每次开机自动启动服务,直接访问网址即可.

最终生成文件样式:

文件路径很重要,下面所有的文件都是如图的路径,基本上所有文件,工具下载路径在底部链接

 

1,下载打包工具Inno Setup

InnoSetup 是一个免费的 Windows 安装程序制作软件,用来打包各个文件的,并将它们联系起来
下载地址:官网地址

inno setup代码如下,代表着打包的整体流程,调用了各个初始化脚本


  
  
  1. #define MyAppName "工资管理系统"
  2. #define MyAppVersion "V1.0"
  3. #define MyAppPublisher "自定义程序出版商"
  4. #define MyAppURL "http://localhost/login"
  5. ; 基本配置
  6. [Setup]
  7. ; NOTE: The value of AppId uniquely identifies this application.
  8. ; Do not use the same AppId value in installers for other applications.
  9. ; ( To generate a new GUID, click Tools | Generate GUID inside the IDE.)
  10. ; 单独标识,可以通过innosetup-QSP -5.6 .1.exe 工具自动生成
  11. AppId={{ 0167D65D -549A -4BA3-B88A -4814EC5A1D35}
  12. AppName={#MyAppName}
  13. AppVersion={#MyAppVersion}
  14. AppPublisher={#MyAppPublisher}
  15. AppPublisherURL={#MyAppURL}
  16. AppSupportURL={#MyAppURL}
  17. AppUpdatesURL={#MyAppURL}
  18. ; 默认安装路径
  19. DefaultDirName=D:\Afu_SalarySystem
  20. DefaultGroupName={#MyAppName}
  21. ; 软件名称
  22. OutputBaseFilename=阿福家工资管理系统
  23. ; 软件图标
  24. SetupIconFile=D:\afu_jjgl_InnoSetupFile\afu.ico
  25. ; 压缩方式
  26. Compression=lzma
  27. ; yes 可以使文件更小
  28. SolidCompression=yes
  29. ; 必需有管理员权限才能安装
  30. PrivilegesRequired=admin
  31. ; 安装密码
  32. ;Password=itdragon
  33. ; 开启加密,可能还需要一个dll文件
  34. ;Encryption=yes
  35. ; 语言配置
  36. [Languages]
  37. Name: "english"; MessagesFile: "compiler:Default.isl"
  38. ; 安装文件
  39. [Files]
  40. ; 安装部署的源文件路径
  41. Source: "D:\afu_jjgl_InnoSetupFile\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
  42. ; NOTE: Don 't use "Flags: ignoreversion" on any shared system files
  43. ; 快捷键
  44. [Icons]
  45. Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
  46. ;Name: "{commondesktop}\快捷HTTP地址"; Filename: http://localhost/login
  47. ;Name: "{commondesktop}\Mysql数据初始化脚本"; Filename: "{app}\mysql\init-data.bat"
  48. ;Name: "{commondesktop}\安装须知"; Filename: "{app}\安装须知.doc"
  49. ; 程序安装成功后执行脚本
  50. [Run]
  51. ;Filename: "{app}\hide_cmd.vbs";
  52. Filename: "{app}\init-windows_dllFiles.bat";
  53. Filename: "{app}\init-jdk.bat";
  54. Filename: "{app}\mysql-8.0.21-winx64\bin\init-mysql.bat";
  55. Filename: "{app}\myService\init-afu.bat ";
  56. ;Filename: "{app}\dll-file\dll-move.bat";

复制粘贴代码,修改其中你的文件名字和路径(建议都改成我的文件名,省事,当然只是建议)

2,安装jdk脚本的制作


  
  
  1. @echo off
  2. cls
  3. echo.
  4. set myjavapath=%cd%\ConfigFiles\Java\jdk -8u162-windows-x64
  5. IF EXIST "%myjavapath%"\bin\jdk -8u162-windows-x64.exe (
  6. echo.
  7. echo 发现已经安装java程序,注册环境变量请按任意键
  8. echo.
  9. echo.
  10. goto SETENV
  11. )
  12. echo.
  13. echo 正在安装jdk,请不要执行其他操作
  14. echo.
  15. echo 请稍等,这个时间大约需要二、三分钟
  16. echo.
  17. start /WAIT %cd%\jdk -8u162-windows-x64.exe /qn INSTALLDIR= "%cd%\ConfigFiles\Java\jdk-8u162-windows-x64"
  18. echo 程序安装完毕,正在注册环境变量
  19. echo.
  20. goto SETENV
  21. :SETENV
  22. echo
  23. ::如果有的话,先删除ClASS_PATH
  24. wmic ENVIRONMENT where "name='CLASS_PATH'" delete
  25. ::创建JAVA_HOME
  26. wmic ENVIRONMENT create name= "JAVA_HOME",username= "<system>",VariableValue= "%myjavapath%"
  27. ::创建CLASS_PATH
  28. wmic ENVIRONMENT create name= "CLASS_PATH",username= "<system>",VariableValue= ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;"
  29. ::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串
  30. call set xx=%Path%;%%%%JAVA_HOME%%%%\jre\bin;%%%%JAVA_HOME%%%%\bin
  31. ::echo %xx%
  32. ::将返回显的字符重新赋值到path中
  33. wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue= "%xx%"
  34. echo.
  35. echo JDK环境变量设置成功
  36. echo.
  37. echo.
  38. : END
  39. exit

复制粘贴代码,修改其中你的文件名字和路径,初始化安装jdk脚本文件名为init-jdk.bat,放在该路径下(D:\afu_jjgl_InnoSetupFile\init-jdk.bat)

插一嘴,我下载的jdk,mysql都是免安装版本,所以目标电脑上不用设置jdk,mysql环境变量也能运行.

 

3.初始化安装MySQL脚本文件的制作


  
  
  1. cd /d %~dp0
  2. cd ..
  3. del /F %cd%\my.ini
  4. echo 删除完成
  5. echo [mysql]>> my.ini
  6. echo default-character- set=utf8>> my.ini
  7. echo [mysqld]>> my.ini
  8. echo port = 3306>> my.ini
  9. echo basedir=%cd%>> my.ini
  10. echo datadir=%cd%\data>> my.ini
  11. echo max_connections= 200>> my.ini
  12. echo character- set- server=utf8>> my.ini
  13. echo default-storage-engine=INNODB>> my.ini
  14. echo wait_timeout= 2147483>> my.ini
  15. echo interactive_timeout= 2147483>> my.ini
  16. echo my.ini生成成功
  17. set inipath=%cd%\my.ini
  18. cd bin
  19. "%cd%\mysqld.exe" -install mysql --defaults-file= "%inipath%"
  20. "%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
  21. net start mysql
  22. sc config mysql start=auto
  23. net stop mysql
  24. net start mysql
  25. echo 安装完毕
  26. "%cd%\mysqladmin.exe" -u root password 123456
  27. echo 修改密码完毕
  28. cd ..
  29. "%cd%\bin\mysql.exe" -uroot -p123456 < "%cd%\initsql\myInitSql.sql"
  30. echo 数据库初始化完成
  31. exit;

复制代码,将文件命名为init-mysql.bat,放在D:\afu_jjgl_InnoSetupFile\mysql-8.0.21-winx64\bin

3.1安装msql时候顺便讲开发阶段的数据库导入进去(通过执行sql语句的方式)

通过navicat或者sqlyog导出sql语句,把下面代码加到你sql文件的开头:

create database IF NOT EXISTS myDatabase character set utf8;
set global character_set_database=utf8;
set global character_set_server=utf8;
USE myDatabase ;


  
  
  1. create database IF NOT EXISTS myDatabase character set utf8;
  2. set global character_set_database=utf8;
  3. set global character_set_server=utf8;
  4. USE myDatabase ;
  5. SET FOREIGN_KEY_CHECKS= 0;
  6. -- ----------------------------
  7. -- Table structure for `t_handwriting_image`
  8. -- ----------------------------
  9. DROP TABLE IF EXISTS `t_handwriting_image`;
  10. CREATE TABLE `t_handwriting_image` (
  11. `image_number` int( 30) unsigned NOT NULL AUTO_INCREMENT,
  12. `user_name` varchar( 30) DEFAULT NULL,
  13. `id_number` varchar( 20) DEFAULT NULL,
  14. `image_type` int( 10) DEFAULT NULL,
  15. `image_dimension` varchar( 10) DEFAULT NULL,
  16. `image_digits` int( 20) DEFAULT NULL,
  17. `image_status` int( 10) DEFAULT NULL,
  18. `image` mediumblob,
  19. `department_id` int( 30) DEFAULT NULL,
  20. `creat_timestamp` datetime DEFAULT NULL,
  21. PRIMARY KEY ( `image_number`)
  22. ) ENGINE= InnoDB AUTO_INCREMENT= 23 DEFAULT CHARSET=utf8;
  23. -- ----------------------------
  24. -- Records of t_handwriting_image
  25. -- ----------------------------

代码开头创建数据库语句的数据库名字改成你的数据库名.

 

创建文件夹initsql,放在mysql根目录下,

将初始化数据库sql语句命名为myInitSql.sql,放在D:\afu_jjgl_InnoSetupFile\mysql-8.0.21-winx64\initsql

4,winsw使用

用途:使用Spring Boot开发的Web项目,打包生成了一个jar包,部署在Windows服务器中,设置为开机启动
下载地址:GitHub
我使用的是winsw-v2.2.0,将Git Hub中下载的WinSW.NET4.exe和sample-minimal.xml文件及springboot项目的jar包放在同一个文件夹中

将winsw执行程序跟xml改成同样的名字

 

4.1编辑myProjectService.xml文件


  
  
  1. <configuration>
  2. <!--安装成Windows服务后的服务名-->
  3. <id>afuService</id>
  4. <!--显示的服务名称-->
  5. <name>afuService</name>
  6. <!--对服务的描述-->
  7. <description>阿福计件管理系统</description>
  8. <!--这里写java的路径,如何配置了环境变量直接写 "java"就行-->
  9. <executable>java</executable>
  10. <!--Xmx256m 代表堆内存最大值为 256MB -jar后面的是项目名-->
  11. <arguments>-Xmx256m -jar afu.jar</arguments>
  12. <!--日志模式-->
  13. <logmode>rotate</logmode>
  14. </configuration>

4.2创建初始化启动服务批处理文件init-afu.bat


  
  
  1. echo -------afuService begin--------
  2. "%cd%\afuService.exe" install afuService
  3. echo -------afuService install end------------------
  4. sc config afuService start= auto
  5. net start afuService
  6. exit

放在D:\afu_jjgl_InnoSetupFile\myService下

5,下载并安装运行软件所需要的dll文件(这些文件正常来说是没有的,除非你以前装过,否则会报错)

dll文件下载地址:文章底部链接

5.1创建自动安装dll文件的脚本init-windows_dllFiles.bat


  
  
  1. start /wait %cd%\windows_dllFiles.exe /q /norestart
  2. exit

放在D:\afu_jjgl_InnoSetupFile

 

6编译成安装包

上面全部没问题后,点击inno setup上的编译

会在同级目录下生成output文件夹里面放的就是安装包

7其他

jdk,msql我用的绿色免安装版本,所以不需要环境变量,下载链接在底部

关于web项目怎么打包成一键部署的exe文件,多一步把tomcat加进去,我没有试过,感兴趣的小伙伴可以自己尝试一下

下载地址链接:https://pan.baidu.com/s/16-oLkKySz5uQ9E0KAlXiyA 
提取码:mbv3

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值