首页 > 其他分享 >installshield 安装jdk并配置环境变量

installshield 安装jdk并配置环境变量

时间:2024-05-11 10:41:24浏览次数:23  
标签:installshield jdk 环境变量 szTitle key endif szMsg1 REGDB

今天来通过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,环境变量,szTitle,key,endif,szMsg1,REGDB
From: https://www.cnblogs.com/whycm/p/18185917

相关文章

  • JDK源码阅读-------自学笔记(二十六)(java.util.Map 自定义讲解)
    一、简介Map就是用来存储“键(key)-值(value)”对的.通过键寻找value,所以键不能重复.数组的本质也是一种键值对,区别就是索引一般是数字,而Map的Key可以是任意对象(字符串,数字),相当于把数组的索引范围扩的更大,使用更方便.实际开发中较为常用.二、Map的常用方法实例(1......
  • Springboot项目镜像制作&传递环境变量、设置hostname、动态设置JVM参数、cmd&entrypoi
    实现制作一个springboot的镜像,并且可以传递环境变量实现动态JVM参数和端口。0.准备&cmd、entrypoint区别1.准备springboot项目一个简单的springboot项目,默认启动8001端口,里面只有一个接口。xxx%curllocalhost:8081indexdocker环境2.CMD、entrypoint区......
  • linux增加环境变量示例
    首先,通过 vim~/.bashrc 命令进入我这个用户的.bashrc文件内 然后在这个文件末尾添加环境变量,比如下面红框中的内容表示添加了路径/home/nfs_new/wangpeng/VSCode-linux-x64/bin为环境变量,实际上这里是把vscode启动命令添加作为环境变量了。其中, $PATH 表示之前所有的环......
  • cc6链-绕过cc1的jdk限制
    为什么cc1有jdk版本限制JDK中的AnnotationInvocationHandler的readObject更新了,所以cc1用不了但是前面的部分还是存在的,只要我们找到一个新的入口就还是能执行命令这里回到LazyMap,LazyMap的get方法可以触发后续的rce所以我们需要寻找新版本JDK中触发LazyMap中get方法的类Tide......
  • ubuntu下多jdk环境轻松却换
    在实际coding生活中,维护老项目与开发新项目常是并行的。快速企业java开发jdk版本,收首先要解决的问题。今天看到一篇Blog,参考配置后完美实现了一键快速切换,nice!!!!!!环境:1、ubuntu222、openjdk1.8、openjdk17具体操作步骤:1、安装openjdk(略),安装位置如下:2、jdk17释放jrebin/jl......
  • 安装jdk
    jdk包名'-x64表示适用于基于x86-64(64位)架构的处理器。'-i586表示适用于基于x86(32位)架构的处理器。'.bin文件通常是独立的安装程序'.rpm文件是针对特定的RPM-based发行版(如RedHat、CentOS等)而设计的'.bin安装给特殊权限然后./包名'.rpm安装rpm-ivh包名......
  • 在IDEA中加载OpenJDK源码
    之所以要阅读OpenJDK源码,是因为SunJDK的某些源码是缺失的,以JDK1.8为例,sun.reflect,sun.rmi及其子包下的类都是没有源码的。如下以下载OpenJDK1.8源码为例进行说明。下载OpenJDK源码文件,如下载zip格式的压缩包。解压OpenJDK源码压缩包文件,在IDEA中按如下路径加载:【File】......
  • idea 项目更改jdk版本后,External Libraries中jdk仍为旧版本
    根据网上搜索,修改Preferences、pom.xml、mavensettings.xml中的jdk版本后,发现ExternalLibraries中jdk仍为旧版本。表示仍旧有漏修改的地方。File->ProjectStructure   ProjectSettings->Project中SDK和LanguageLevel都需要修改  Project Settings->......
  • JDK8和JDK17共存以及切换的方法
    1、先安装"jdk-8u381-windows-x64.exe",再安装"jdk-17_windows-x64_bin.exe"2、"系统属性"-"高级"-"环境变量"-"系统变量"-"Path"-"编辑",删除以下2条C:\ProgramFiles\CommonFiles\Oracle\Java\javapathC:\Pro......
  • Eclipse Memory Analyzer (MAT)的安装后提示JDK版本不对要升级到jdk_17
    背景在启动MAT分析内存时报错:Version1.8.0ofthejvmisnotsuitableforthisproduct,Version17orgreaterisrequired。问题原因很明显,我电脑的JDK和JRE的环境是1.8,需要提升版本:提示需要JDK11才可以运行,但是我的环境变量配置的是JDK8,这咋整?不想更改环境变量中的JDK配置......