今天来通过installshield安装jdk以及配置环境变量,本质上是调用第三方安装程序。

首先将jdk的安装文件添加到我们的安装程序中

然后编写我们的脚本

选择BEHAVIOR AND LOGIC->InstallScript->Setup.Rul->After Move Data->OnFirstUIAfter,如图

OnFirstUIAfter脚本如下

点击查看代码
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOpt1, szOpt2;
NUMBER bOpt1, bOpt2;
begin
Disable(STATUSEX);
if (SYSINFO.bIsWow64) then //判断64位操作系统
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY ;
endif;
//安装jdk
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (RegDBKeyExist ("SOFTWARE\\JavaSoft\\Java Development Kit\\1.8.0_191") < 0) then
MessageBox("准备安装jdk",INFORMATION);
LaunchAppAndWait (TARGETDIR^"third\\jdk-8u191-windows-x64.exe","", LAAW_OPTION_WAIT);
else
MessageBox("jdk已安装",INFORMATION);
endif;
bOpt1 = FALSE;
bOpt2 = FALSE;
if ( BATCH_INSTALL ) then
SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
else
SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bOpt1 , bOpt2 );
endif;
end;

之所以放在这里,是因为此时安装包里的文件已经移动到用户选择的或默认的安装地址里,可以通过TARGETDIR获取到安装路径,方便查找文件。

配置环境变量

点击查看代码
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOpt1, szOpt2,reg_jdk_key,svValue,environment_key,java_path,pathValue;
NUMBER bOpt1, bOpt2,nvSize,nvType;
begin
Disable(STATUSEX); bOpt1 = FALSE;
bOpt2 = FALSE;
reg_jdk_key="SOFTWARE\\JavaSoft\\Java Development Kit\\1.8.0_191";
environment_key="SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
java_path="%JAVA_HOME%\\bin";
//配置环境变量
if (SYSINFO.bIsWow64) then //如果为64位操作系统
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY ; //则为注册表操作进行64位特殊设置
endif;
//设置注册表根目录
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//判断是否存在jdk
if(RegDBKeyExist(reg_jdk_key)=1)then
//获取jdk安装目录成功
if(RegDBGetKeyValueEx(reg_jdk_key,"JavaHome",nvType,svValue,nvSize)=0)then
if(RegDBSetKeyValueEx(environment_key,"JAVA_HOME",REGDB_STRING,svValue,-1)=0)then
//path添加jdk bin
//获取path的值
RegDBGetKeyValueEx(environment_key,"Path",nvType,pathValue,nvSize);
pathValue=java_path+";"+pathValue;
RegDBSetKeyValueEx(environment_key,"Path",REGDB_STRING,pathValue,-1);
else
MessageBox("JAVA_HOME创建失败",SEVERE);
endif;
endif;
endif; if ( BATCH_INSTALL ) then
SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
else
SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bOpt1 , bOpt2 );
endif;
end;

RegDBGetKeyValueEx(reg_jdk_key,"JavaHome",nvType,svValue,nvSize) 该方法是获取注册表中某一个值,返回0 或 <0的值。查询的值的数据放在svValue中,可以直接使用

RegDBSetKeyValueEx(environment_key,"Path",REGDB_STRING,pathValue,-1); 设置环境注册表中的值

参考文档

https://www.cnblogs.com/Cindy_weiwei/archive/2009/05/18/1459542.html

installshield 安装jdk并配置环境变量的更多相关文章

  1. Ubuntu安装JDK与配置环境变量

    Ubuntu14.04安装JDK与配置环境变量 工具/原料   Ubuntu14.04系统 方法/步骤     先从Oracle官网下载JDK.先选择同意按钮,然后根据自己的系统下载相应版本.我的系统 ...

  2. window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量

    本人是在windows 7 上安装了虚拟机,虚拟机安装的是linux(centOS7.0)系统现在在Windows 上安装SecureCRT 远程虚拟机的linux系统,安装JDK以及配置环境变量. ...

  3. 安装JDK并配置环境变量以及Hello World

    摘要:本文主要说明在Windows环境下JDK的安装,以及安装完成之后环境变量的配置,并通过DOS运行简单的Java程序. 安装JDK 说明 SDK:软件开发工具包(Software Developm ...

  4. Linux环境下安装JDK并配置环境变量

    首先查看是否已经安装了JDK并配置环境变量. [root@dhcc_plat opt]# java -version -bash: java: command not found [root@dhcc ...

  5. Java入门——在Linux环境下安装JDK并配置环境变量

    Java入门——在Linux环境下安装JDK并配置环境变量 摘要:本文主要说明在Linux环境下JDK的安装,以及安装完成之后环境变量的配置. 使用已下载的压缩包进行安装 下载并解压 在Java的官网 ...

  6. 安装jdk并配置环境变量

    安装jdk并配置环境变量 安装jdk 点击访问官网 https://www.oracle.com/downloads/或直接下载 https://www.jdkdownload.com/ 推荐使用后面 ...

  7. Linux安装JDK并配置环境变量

    Linux - 安装jdk并配置环境变量 1. 前往JDK官网, 地址:https://www.oracle.com/java/technologies/downloads/   复制下载链接 2.  ...

  8. win10安装jdk以及配置环境变量

    本人使用的jdk版本:jdk-8u171-windows-x64.exe, 1.安装jdk: 双击 jdk-8u171-windows-x64.exe ,然后就是简单的安装流程,安装文件位置建议保持默 ...

  9. Java如何安装JDK,配置环境变量。超级详细图及操作

    突然想起自己大学刚接触java的时候,要下载JDK和配置环境变量,那时候我上网找了很多教学,结果发现很多的博主都是表达不太清晰,或者是我理解能力差点,导致我那时候搞了一个多小时才搞定,而且事后每次我重 ...

  10. 下载安装JDK,配置环境变量

    Hello,JDK; 在开始学习JAVA之前,第一件事情肯定是被告知:先下载JDK.就像我的一个朋友问我的一样"JDK是个什么鬼?我学的不是JAVA么,为什么要下载JDK?". J ...

随机推荐

  1. #2-SAT,平面图#洛谷 3209 [HNOI2010] 平面图判定

    题目传送门 分析 首先一张图是平面图的必要条件为 \(m\leq 3*n-6\), 然后考虑到这题的图存在哈密尔顿回路,也就是说非环边因为跨立形成奇环即为无解 那么直接拆点跑2-SAT就可以了 代码 ...

  2. OpenHarmony携千行百业创新成果亮相HDC.Together 2023

     8月4日-6日,华为开发者大会2023(以下简称"大会")在中国松山湖举办,OpenAtom OpenHarmony(简称"OpenHarmony")隆重参会 ...

  3. OpenHarmony社区运营报告(2023年3月)

      本月快讯 • <OpenHarmony 2022年度运营报告>于3月正式发布,2022年OpenAtom OpenHarmony(以下简称"OpenHarmony" ...

  4. 批处理及有状态等应用类型在 K8S 上应该如何配置?

    众所周知, Kubernetes(K8S)更适合运行无状态应用, 但是除了无状态应用. 我们还会有很多其他应用类型, 如: 有状态应用, 批处理, 监控代理(每台主机上都得跑), 更复杂的应用(如:h ...

  5. 如何在HarmonyOS对数据库进行备份,恢复与加密

    数据库备份与恢复 场景介绍 当应用在处理一项重要的操作,显然是不能被打断的.例如:写入多个表关联的事务.此时,每个表的写入都是单独的,但是表与表之间的事务关联性不能被分割. 如果操作的过程中出现问题, ...

  6. 重新点亮shell————awk表达式[十二]

    前言 简单介绍一下awk命令. 正文 介绍: 字段: 实例: 例子: 分割例子: 显示行号例子: awk 表达式: 赋值操作符 这个$1 解释一下,在我们的脚本中,这个$1 是第一个参数,这里是第一个 ...

  7. spring boot @propertySource @importResource @Bean [六]

    @propertySource 指定property的配置源. 创建一个person.property: 然后修改person注解; 在运行test之后,结果为: @importResource 这个 ...

  8. 4A 安全之授权:编程的门禁,你能解开吗?

    概述 在安全管理系统里面,授权(Authorization)的概念常常是和认证(Authentication).账号(Account)和审计(Audit)一起出现的,并称之为 4A.就像上一文章提到的 ...

  9. 存储过程编写·记(“xxx“在需要下列之一:if)

    存储过程编写·记("xxx"在需要下列之一:if) 使用的数据库为Oracle数据库,数据库客户端为DBeaver 简单来说,就是使用SQL语句进行一些函数编写,进而进行一些过滤啊 ...

  10. 力扣1112(MySQL)-每位学生的最高成绩(中等)

    题目: 表:Enrollments (student_id, course_id) 是该表的主键. 问题编写一个 SQL 查询,查询每位学生获得的最高成绩和它所对应的科目,若科目成绩并列,取 cour ...