将jar包转为exe文件再制作成安装包

使用idea将项目打包成jar包

将jar包转为exe文件再制作成安装包_第1张图片

 下载exe4j Wizard并运行,选择项目类型为jar

将jar包转为exe文件再制作成安装包_第2张图片

配置应用名称以及输出的路径文件夹 

将jar包转为exe文件再制作成安装包_第3张图片

配置服务名及图标文件

将jar包转为exe文件再制作成安装包_第4张图片

配置输出日志,可以自定义名称

将jar包转为exe文件再制作成安装包_第5张图片

 配置服务描述,服务自动启动或手动启动

将jar包转为exe文件再制作成安装包_第6张图片

配置为64位系统程序

将jar包转为exe文件再制作成安装包_第7张图片

将jar包转为exe文件再制作成安装包_第8张图片

 配置Java调用,将刚刚打包的jar导入

将jar包转为exe文件再制作成安装包_第9张图片

配置jre版本,导入jre文件

将jar包转为exe文件再制作成安装包_第10张图片

将jar包转为exe文件再制作成安装包_第11张图片

 点击finish,jar包转exe成功

将jar包转为exe文件再制作成安装包_第12张图片

下载innoSetup编译器并打开,新建脚本

将jar包转为exe文件再制作成安装包_第13张图片

配置应用程序信息

将jar包转为exe文件再制作成安装包_第14张图片

 配置程序输出文件夹名称

将jar包转为exe文件再制作成安装包_第15张图片

将exe4j生成的exe文件作为主执行文件,同时添加其他所需文件

将jar包转为exe文件再制作成安装包_第16张图片

配置应用程序快捷方式

将jar包转为exe文件再制作成安装包_第17张图片

可配置安装时要显示的文档文件

将jar包转为exe文件再制作成安装包_第18张图片

配置安装模式为管理员安装模式

将jar包转为exe文件再制作成安装包_第19张图片

根据需要选择安装语言

将jar包转为exe文件再制作成安装包_第20张图片

选择安装包输出文件夹,文件名,图标,可加入安装密码

将jar包转为exe文件再制作成安装包_第21张图片

使用#define编译指令,可丰富安装界面

将jar包转为exe文件再制作成安装包_第22张图片

完成安装包制作

将jar包转为exe文件再制作成安装包_第23张图片

进入到脚本编辑器,可加入用户自定义功能,比如动态配置数据源,可让用户自定义连接某个数据库,配置代码如下:

[code]
var
myPage:TwizardPage;//定义窗口
myPage2:TwizardPage;
ed1:TEdit;//数据库IP
ed2:TEdit;//数据库名称
ed6:TEdit;//数据库用户名
ed7:TEdit;//数据库用户密码

Lbl1: TNewStaticText;//数据库IP
Lbl2:TNewStaticText;//数据库名称
Lbl6:TNewStaticText;//数据库用户名
Lbl7:TNewStaticText;//数据库用户密码
//定义校验方法,校验失败时,下一步按钮为空
 
procedure Key_Form_KeyChange(Sender: TObject);
begin

WizardForm.NextButton.Enabled := True;
end;
//初始化引导 窗口
procedure InitializeWizard();
begin
myPage2:=CreateCustomPage(wpWelcome, '自定义数据库设置', '数据库设置');
Lbl1 := TNewStaticText.Create(myPage2);
Lbl1.Left := ScaleX(1);
Lbl1.Top := ScaleY(5);
Lbl1.Width := ScaleX(100);
Lbl1.Height := ScaleY(50);
Lbl1.Caption := '数据库IP';
Lbl1.Parent := myPage2.Surface;
ed1:=TEdit.Create(myPage2);
ed1.Width:=ScaleX(100);
ed1.Left := ScaleY(10);
ed1.Top := ScaleY(25);
ed1.Text :='localhost';
ed1.Parent:=myPage2.Surface;
//ed1.OnChange := @Key_Form_KeyChange;//添加校验方法

Lbl2 := TNewStaticText.Create(myPage2);
Lbl2.Left := ScaleX(10);
Lbl2.Top := ScaleY(80);
Lbl2.Width := ScaleX(100);
Lbl2.Height := ScaleY(50);
Lbl2.Caption := '数据库名称';
Lbl2.Parent := myPage2.Surface;
ed2:=TEdit.Create(myPage2);
ed2.Width:=ScaleX(100);
ed2.Left := ScaleY(10);
ed2.Top := ScaleY(100);
ed2.Text :='YIMADB';
ed2.Parent:=myPage2.Surface;
//ed2.OnChange := @Key_Form_KeyChange;//添加校验方法

Lbl6 := TNewStaticText.Create(myPage2);
Lbl6.Left := ScaleX(10);
Lbl6.Top := ScaleY(155);
Lbl6.Width := ScaleX(100);
Lbl6.Height := ScaleY(50);
Lbl6.Caption := '数据库用户名';
Lbl6.Parent := myPage2.Surface;
ed6:=TEdit.Create(myPage2);
ed6.Width:=ScaleX(100);
ed6.Left := ScaleY(10);
ed6.Top := ScaleY(175);
ed6.Text :='ymdb';
ed6.Parent:=myPage2.Surface;
//ed6.OnChange := @Key_Form_KeyChange;//添加校验方法

Lbl7 := TNewStaticText.Create(myPage2);
Lbl7.Left := ScaleX(10);
Lbl7.Top := ScaleY(230);
Lbl7.Width := ScaleX(100);
Lbl7.Height := ScaleY(50);
Lbl7.Caption := '数据库用户密码';
Lbl7.Parent := myPage2.Surface;
ed7:=TEdit.Create(myPage2);
ed7.Width:=ScaleX(100);
ed7.Left := ScaleY(10);
ed7.Top := ScaleY(250);
ed7.Text :='111111';
ed7.Parent:=myPage2.Surface;
ed7.OnChange := @Key_Form_KeyChange;//添加校验方法

end;
//添加步骤
procedure CurStepChanged(CurStep: TSetupStep);
var
    fileName,tempStr:String;
    svArray: TArrayOfString;
    nLines,i:Integer;
begin
//if CurStep=ssinstall then
//安装前执行
       if CurStep=ssPostinstall then
//复制文件后执行
            begin
//开始修改文件
fileName := ExpandConstant('{app}\application-other.yml');
LoadStringsFromFile(fileName, svArray);
nLines := GetArrayLength(svArray);//读取文件
  for i := 0 to nLines - 1 do
  begin
tempStr := svArray[i];

//数据库名
if (1 = Pos('          url: jdbc:postgresql://localhost:5432/XXXXXX', tempStr)) then//查找目标行
begin
  svArray[i] := ExpandConstant('          url: jdbc:postgresql://'+ed1.Text+':5432/'+ed2.Text);//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
  
//数据库账号
if (1 = Pos('          username: XXXX', tempStr)) then//查找目标行
begin
  svArray[i] := ExpandConstant('          username: '+ed6.Text);//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
 
//数据库密码
if (1 = Pos('          password: 111111', tempStr)) then//查找目标行
begin
  svArray[i] := ExpandConstant('          password: '+ed7.Text);//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
  end;
  SaveStringsToFile(fileName, svArray, false);
end;
if CurStep=ssDone then
 
//安装完成后执行
 
end;

运行Java程序时,需要有jre运行时环境,当在一台新机上想运行Java程序时必须得有jre和jdk,这样很不友好,所以在用exe4j转exe时,将jre一起配置进去,在编译安装包制作脚本文件时,需要将jre配置放出来,代码如下:

先宏定义一个变量

#define MyJREName "jre"

在Files里将jre配置放出来

[Files]
Source: "C:\Users\A\Desktop\转exe制作安装包准备文件\jre\*"; DestDir: "{app}\{#MyJREName}"; Flags: ignoreversion recursesubdirs createallsubdirs

这样,在一台没有配置jdk和jre的机子上,也能运行Java程序安装包了

然后点击编译(生成安装包到输出文件夹,需手动运行安装包)或运行(编译完立即运行安装包)。

安装包运行效果图:

将jar包转为exe文件再制作成安装包_第24张图片

将jar包转为exe文件再制作成安装包_第25张图片

将jar包转为exe文件再制作成安装包_第26张图片

你可能感兴趣的:(安装包,java,exe4j,innoSetup,jar)