cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
k_katselashvili
Level 2

Registry key installation requirement

Hello,

I'm trying to create installation requirement, basically the goal is to verify that ASP.NET is installed by checking if registry key exists,
but when I run setup.exe it can't find the registry key.

I'm using InstallShield Professional 2016 Basic MSI Project.

Steps:
1. Create a custom software condition
2. Choose the item you want ot search by from the list below: Registry entry
3. a) Registry root: HKEY_LOCAL_MACHINE
b) Registry key: SOFTWARE\Microsoft\InetStp\Components\ASPNET45
c) Registry value (optional): tried leave empty and with value 1
d) Search the 64-bit portion of the registry: unchecked/checked (tried both)
4. a) Your installation will be allowed to proceed if the search you created is: FOUND
b) Text to display: mymessage

What am I doing wrong or is there some other workaround?
Labels (1)
0 Kudos
(4) Replies
JSClark
Level 6

Have you tried System Search under Behavior and Logic?
0 Kudos
k_katselashvili
Level 2

JSClark wrote:
Have you tried System Search under Behavior and Logic?


It creates record under System Search automatically and yes I tried using System Search, nothing works for now
0 Kudos
beti17
Level 3

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.
0 Kudos
beti17
Level 3

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.
0 Kudos