PDA

View Full Version : Check registrys data and install software



beti17
02-18-2017, 07:38 AM
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.

Thananjeyan.M
03-16-2017, 04:44 AM
Hi

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.petersen
03-16-2017, 01:26 PM
That seems awfully complicated. I'd tend to use the Prerequisite Editor under the Tools menu and fill in the blanks to make my own PRQ file. This assumes an MSI with a Setup.exe wrapper. If that is unacceptable then drive on!

Chad