- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Check registrys data and install software
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
Check registrys data and install software
Hello
I want to create a dialog with 1 edit field for take one parameter in install script mode in Install shield software. This parameter must searched in windows registry (value of a key name or a key name for check is a exists a software in registry or not.If this parameter not exists in registry, call a setup.exe file for installed a software(This software don’t exist in Prerequisites or Objects view) ,else go to after dialog. This parameter can change at any time installation my setup file. I wrote 5 script for it and I use any scripts in my project in OnFirstUIBefore function and in Dlg_SdRegisterUser . actually i don’t know where should use from they or set a other thing in other places. I use my script in view list( install script view and OnFirstUIBefore function and in Dlg_SdRegisterUser ), But I don’t get my target.
I have 2 question:
1) how i want to get my target?How script is right?Because maybe i'm wrong path .
2)For call a setup.exe file of any software(This software don’t exist in Prerequisites or Objects view), must Which function do I use?
One script is:
Dlg_SdRegisterUser:
//I delete company name edit field in SdRegisterUser dialog.
szMsg = "";
szTitle1 = "";
//{{IS_SCRIPT_TAG(Dlg_SdRegisterUser)
nResult =SdRegisterUser( szTitle, szMsg, szName, szCompany );
if (nResult = BACK) goto Dlg_SdLicense2;
nresault2=RegDBKeyExist (szName );
if((nresault2=1) && (nResult=0)) then
goto Dlg_SetupType2;
else
MessageBox("error in your input", SEVERE); // this line is place for call setup.exe file of software(gusetion 2)
goto Dlg_SdRegisterUser; // this line is place for call setup.exe file of software(gusetion 2)
endif;
//}}IS_SCRIPT_TAG(Dlg_SdRegisterUser)
……………………………………………………………………………………………………………………………………………..
Two script is:
Dlg_SdRegisterUser:
//I delete company name edit field in SdRegisterUser dialog.
szMsg = "";
szTitle1 = "";
//{{IS_SCRIPT_TAG(Dlg_SdRegisterUser)
nResult =SdRegisterUser( szTitle, szMsg, szName, szCompany );
if (nResult = BACK) goto Dlg_SdLicense2;
nresault1= RegDBSetDefaultRoot ( nRootKey );
nresault2=RegDBGetKeyValueEx ( szKey, szName, nvType, svValue, nvSize ) ;
if(nresault2=nResult) then goto Dlg_SdLicense2;
else
MessageBox("Unable to find a qualifying program. " +"Setup will now exit.", SEVERE); // this line is place for call setup.exe file of software(gusetion 2)
goto Dlg_SdRegisterUser; // this line is place for call setup.exe file of software(gusetion 2)
endif;
//}}IS_SCRIPT_TAG(Dlg_SdRegisterUser)
……………………………………………………………………………………………………………………………………………
Three script is:
Dlg_SdRegisterUser:
szMsg = "";
szTitle = "";
szName= "";
szCompany= "";
szSubKey="HKEY_LOCAL_MACHINE\\SOFTWARE\\Adonis\\Test\\12345";
nResult =SdRegisterUser(szTitle, szMsg, szName, szCompany);
//nresault2=RegDBKeyExist();
if (nResult = BACK) goto Dlg_SdLicense2;
//nresault2=RegDBKeyExist (szKey);
if ((RegDBKeyExist (szSubKey)=1) && (szName="HKEY_LOCAL_MACHINE\\SOFTWARE\\Adonis\\Test\\12345")) then
goto Dlg_SetupType2;
else
MessageBox("error in your input", SEVERE); // this line is place for call setup.exe file of software(gusetion 2)
goto Dlg_SdRegisterUser; // this line is place for call setup.exe file of software(gusetion 2)
endif;
//nresault2=RegDBKeyExist (szName ); ……………………………………………………………………………………………………………………………….
four script is:
Dlg_SdRegisterUser:
szMsg = "";
szTitle = "";
nResult =SdRegisterUser( szTitle, szMsg, szName, szCompany );
if (nResult = BACK) goto Dlg_SdLicense2;
szName= szSubKey;
nresault2=RegDBKeyExist (szSubKey );
if (szName= szSubKey) then
goto Dlg_SetupType2;
else
MessageBox("error in your input", SEVERE); // this line is place for call setup.exe file of software(gusetion 2).
goto Dlg_SdRegisterUser; // this line is place for call setup.exe file of software(gusetion 2).
endif;
And in OnAppSearch function after abow script :
function OnAppSearch()
string szSubKey;
number nresault2;
begin
nresault2=RegDBKeyExist (szSubKey );
if(nresault2=1) then
return nresault2;
endif;
end;
and I set value for this script in AppSearch and Reglocator table in my project from below link:
http://helpnet.installshield.com/installshield22helplib/helplibrary/FAQRegistryReadData.htm
…………………………………………………………………………………………………………………………………………….
Five script:
Dlg_SdRegisterUser:
szMsg = "";
szTitle = "";
szName= "";
szCompany= "";
nResult =SdRegisterUser(szTitle, szMsg, szName, szCompany);
if (nResult = BACK) goto Dlg_SdLicense2;
if ((nResult<0) && (szName="HKEY_LOCAL_MACHINE\\SOFTWARE\\Adonis\\Test\\12345")) then
goto Dlg_SetupType2;
else
MessageBox("error in your input", SEVERE); // this line is place for call setup.exe file of software(gusetion 2).
goto Dlg_SdRegisterUser; // this line is place for call setup.exe file of software(gusetion 2).
endif;
//nresault2=RegDBKeyExist (szName );
And in OnAppSearch function after abow script :
function OnAppSearch()
string szSubKey;
number nresault;
begin
szSubKey="HKEY_LOCAL_MACHINE\\SOFTWARE\\Adonis\\Test\\12345";
nresault=RegDBKeyExist( szSubKey);
if ((RegDBKeyExist (szSubKey)<0)) then
MessageBox("error in your input", SEVERE);
return nresault;
endif;
//end;
Thanks for your help.
i) Keep your setup.exe file in SUPPORTDIR folder
ii) use LaunchAppAndWait function to execute that setup.
Sample code :
if ( Registry is not exists ) then
LaunchAppAndWait(SUPPORTDIR ^ "setup.exe","",WAIT);
endif;
Thanks,
Thananjeyan
Chad