installshield java_使用InstallShield打包java程序exe以及jdk,安装完成自动运行

大家都知道java生成的exe如果没有jre是无法运行的,如果客户自己安装setup.exe以后自己配置java环境,那客户一定会骂你这个软件怎么这么差,呵呵。所以我今天要说的使用InstallShield打包将java

exe

jdk(或jre)一起打包安装,安装完成自动执行EXE.至于如何打包exe请参考我前面写的:http://suiyuan0808.iteye.com/blog/852231.我把我之前做的打包代码拷贝出来供大家参考。这段代码需要写到InstallShield工程的Setup.Rul里面去。下面语言有点像vb语言

#include "ifx.h"

//开始安装时候会自动检查jdk环境并安装

function OnBegin()

begin

Disable (BACKBUTTON);

if(!MAINTENANCE)then

SdLicense2 ("License ", "", "", SUPPORTDIR ^ "sn.txt",

FALSE);

endif ;

//如果大家的jdk和我的不一样请修改红色粗体部分即可。

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);

//这里意思在注册表里面没有找到jdk注册信息,则安装jdk

if (RegDBKeyExist ("SOFTWARE\\JavaSoft\\Java Development

Kit\\1.6.0_04") <

0) then

if(LaunchAppAndWait (SUPPORTDIR^"jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe","",

LAAW_OPTION_WAIT)<0)then

MessageBox ("您的系统没有安装 JDK

1.6.0_04 t! ", INFORMATION);

endif;

endif;

end;

//安装结束之前,设置java_home环境变量

function OnEnd()

STRING szFeatureName;

STRING serviceTarget;

STRING szDocFile;

STRING szKey;

NUMBER nvType;

STRING svValue;

NUMBER nvSize;

begin

//检查是否已经安装jdk

szKey = "SOFTWARE\\JavaSoft\\Java Development

Kit\\1.6.0_10";

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);

//如果已经安装则设置环境变量

java_home

if (RegDBKeyExist(szKey)=1) then//如果该注册表值存在

if(RegDBGetKeyValueEx(szKey,"JavaHome",nvType,svValue,nvSize)=0)

then

szKey = "SYSTEM\\CurrentControlSet\\Control\\Session

Manager\\Environment";

if(RegDBSetKeyValueEx(szKey, "JAVA_HOME", REGDB_STRING, svValue,

-1)<0) then

MessageBox ("Javahome create failed, please set it manually!",

SEVERE);

endif;

endif;

endif;

//最后启动您的exe文件

szFeatureName="main";

serviceTarget=TARGETDIR^"wangdianzhushou.exe";

if (FeatureIsItemSelected(MEDIA, szFeatureName)=1) then

if(FindFile(TARGETDIR, " wangdianzhushou.exe

", szDocFile)=0) then

if (LaunchApp (serviceTarget, "") < 0) then

MessageBox ("无法启动程序 "+serviceTarget+".", SEVERE);

endif;

endif;

endif;

end;

结合我们自己产品的脚本:

function OnEnd()

STRING

szTitle, szMsg1, szMsg2;

STRING serviceTarget, msvcr100Target,

msvcp100Target;

STRING exePATH,SystemFolder;

BOOL vcredistIsResult, msvcr100IsResult,

msvcp100IsResult;

NUMBER

nDefOption, nReserved,nOption;

//below is for environemnt //zz

NUMBER

nResult; //zz

STRING

szKey, szEnv, szTargetPath; //zz

POINTER

pEnv; //zz

// above is for environemnt //zz

begin

exePATH=TARGETDIR+"\\"+"MQA_2012_07";

serviceTarget

=exePATH^"vcredist_x86.exe";

msvcr100Target=SystemFolder^"msvcr100.dll";

msvcp100Target=SystemFolder^"msvcp100.dll";

//SystemFolder=C:\Windows\System32\

vcredistIsResult = Is(

FILE_EXISTS, serviceTarget ); // zz:

判断vcredist_x86是否存在

msvcr100IsResult = Is(

FILE_EXISTS, msvcr100Target );

msvcp100IsResult = Is(

FILE_EXISTS, msvcp100Target );

if(vcredistIsResult=TRUE

) then //zz vcredist_x86存在则执行下面内容

if(msvcr100IsResult=FALSE)

then

//if

(LaunchApplication (serviceTarget, "",

"",SW_NORMAL,200,LAAW_OPTION_WAIT) < 0) then

if (LaunchApp

(serviceTarget, "/p") < 0) then

MessageBox

("install vcredist_x86 failed", SEVERE);

endif;

elseif(msvcp100IsResult=FALSE)

then

//if

(LaunchApplication (serviceTarget, "",

"",SW_NORMAL,200,LAAW_OPTION_WAIT) < 0) then

if (LaunchApp

(serviceTarget, "/p") < 0) then

MessageBox

("install vcredist_x86 failed", SEVERE);

endif;

endif;

endif;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值