installshield 安装jdk并配置环境变量

news/2024/9/29 5:31:40

今天来通过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;
beginDisable(STATUSEX);if (SYSINFO.bIsWow64) then //判断64位操作系统REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY ;endif;//安装jdkRegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);if (RegDBKeyExist ("SOFTWARE\\JavaSoft\\Java Development Kit\\1.8.0_191") < 0) thenMessageBox("准备安装jdk",INFORMATION);LaunchAppAndWait (TARGETDIR^"third\\jdk-8u191-windows-x64.exe","", LAAW_OPTION_WAIT);elseMessageBox("jdk已安装",INFORMATION);endif;bOpt1   = FALSE;bOpt2   = FALSE;    if ( BATCH_INSTALL ) thenSdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );elseSdFinish ( 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;
beginDisable(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);//判断是否存在jdkif(RegDBKeyExist(reg_jdk_key)=1)then//获取jdk安装目录成功if(RegDBGetKeyValueEx(reg_jdk_key,"JavaHome",nvType,svValue,nvSize)=0)thenif(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);elseMessageBox("JAVA_HOME创建失败",SEVERE);endif;endif;endif;if ( BATCH_INSTALL ) thenSdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );elseSdFinish ( 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

安装Node+npm

下载node 地址: https://nodejs.org/download/rc/v22.0.0-rc.2/ 下载22版本,并安装

Spring启动流程

本文基于AnnotationConfigApplicationContext的方式启动,解析Spring启动的流程 AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);一、构造方法 容器启动需要扫描BD(BeanDefinition),并创建BD,Spring将这…

Sychronized和ReentrantLock有哪些不同点

`synchronized` 和 `ReentrantLock` 是 Java 中用于实现线程同步的两种机制,它们之间存在多方面的不同,主要体现在以下几点: 1. 用法上的差异: - `synchronized` 是 Java 的关键字,可以直接用于方法或代码块。对于方法,可以同步整个方法;对于代码块,可以更细粒度地控…

AutoCAD .NET framework支持情况

出处 https://forums.autodesk.com/t5/net/net-framework-support/m-p/9403930 问题描述 我想问一下是否有一些官方表格.Net framework支持。有人有关于支持.NET 5的信息/经验吗? 回答1(03-27-2020)附加了一个用于AutoCAD/Visual Sudio兼容性的非官方表格。 我没有测试,但是…

hj_podman_20240510

略创建文件夹&容器停止&删除 yum install podman yum update / apt-get update # podman exec -u 0 -it a4a89d953992 /bin/bash 这是root账户进入 -u 0~~~# mysql 8.0.37 podman pull mysql:8.0.37 mkdir -p /home/hj/hj_mysql8.0.37_3307 cd /home/hj/hj_mysql8.0.…

开源EEG脑电图参考设计+信用卡大小、USB供电的4象限源测量单元

1、ESP-BLE-MESH - 乐鑫开源的蓝牙 mesh 协议栈 ESP-BLE-MESH 是乐鑫开源的蓝牙 mesh 协议栈,已通过蓝牙技术联盟 (SIG) 全功能认证,支持 Bluetooth Mesh Specification v1.0.1 中规定的所有功能与应用模型。使用 ESP-BLE-MESH 技术,可以和全球不同厂商、不同类型的标准蓝牙…

使用vue ui新建一个vue项目

参考:https://blog.csdn.net/weixin_46932840/article/details/114590107@目录一、安装环境二、使用vue ui初始化步骤1.我的是到C盘的Program Files\nodejs\node_global目录下执行以下命令2.执行命令后会自动跳转到初始化项目的页面,如下图操作3.最后我一开始执行npm run ser…

《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作

1.简介 有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作。 2.wheel模拟鼠标滚动 wheel模拟鼠标滚动,就是通过调度一个wheel事件。(滚轮事件如果不…