欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-03 21:08:58
...

使用idea将项目打包成jar包

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

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

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

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

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

配置服务名及图标文件

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

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

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

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

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

配置为64位系统程序

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

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

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

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

配置jre版本,导入jre文件

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

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

 点击finish,jar包转exe成功

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

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

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

配置应用程序信息

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

 配置程序输出文件夹名称

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

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

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

配置应用程序快捷方式

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

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

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

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

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

根据需要选择安装语言

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

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

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

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

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

完成安装包制作

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

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

[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文件再制作成安装包

安装包运行效果图:

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

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

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