cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Rachelbaskaran
Level 5

Self-registeration error- Installshield 2009

Hey,

I get this error when I set the self-register to YES in the Default component.

I want my 3 exe's to run while my installer is being installed. The problem is when the apache msi package runs, in few mins time other 2 ( i.e.PHP and MySQL exe pops to start running ) and finally I get the error message

"Timeperiod is over for C:\Program Files\My Company Name\Copy\mysql-gui-tools-5.0....."

Click OK to continue or Cancel to exit. If I click OK I get the finish dialog box.

Can anyone give me a solution?

Thanks
Rachel
Labels (1)
0 Kudos
(6) Replies
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

This error is occurring if you have these files included in a component with the Self Register option set to Yes that cannot be self registered. MSI files cannot be self registered (only COM servers in DLLs, EXEs, OCXs, etc. can be registered). These files should be moved to a different component that does not have self registration enabled or they can be placed in Support Files (so that they are not installed) and launched from SUPPORTDIR during the install.
0 Kudos
Rachelbaskaran
Level 5

Hey Josh,

Thanks for your reply.

If I waan to go for extracting the 3 exe's( not msi) files, think I need to write a script called LAUNCHAPP. Yes, I did write the script

#define APPLICATION "C:\\Program Files\\Company name\\MySQL-4.18-Setup.exe"
#define APPLICATION1"C:\\Program Files\\Company name\\php-5.0.4-installer.exe"
#define CMD_LINE ""

#include "Ifx.h"

function OnMoved()
begin
Delay(5);
if(LaunchApp(APPLICATION, CMD_LINE) < 0) then
MessageBox("Unable to launch "+APPLICATION+".",SEVERE);
Delay(30);
elseif(LaunchApp(APPLICATION1, CMD_LINE) < 0) then
MessageBox("Unable to launch "+APPLICATION1+".", SEVERE);
endif;

end;

But the problem is before SQL exe completes extracting, php pops up for extracting and in few secs Finish dialog box is displayed. How do I delay the process between each exe( i.e. go one by one ) If it's LAUNCHAPPNANDWAIT, what flag do I need to pass and where?


Thanks
Rachel
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

These setups could be launching child processes and then exiting once the child processes have started. You can try passing the LAAW_OPTION_WAIT_INCL_CHILD option along with LAAW_OPTION_WAIT to LaunchApplication or LaunchAppAndWait. This should wait for any direct child processes of the EXE's you are launching.
0 Kudos
Rachelbaskaran
Level 5

Hey Josh,

Still it happens to collide, I'm attaching the screen shot for your understanding also my script to check where I went wrong.



#define APPLICATION "C:\\Program Files\\Company name\\MySQL-4.18-Setup.exe"
#define APPLICATION1"C:\\Program Files\\Company name\\php-5.0.4-installer.exe"
#define APPLICATION2"C:\\Program Files\\Company name\\apache_2.0.53-win32-x86-no_ssl.exe"
#define CMD_LINE ""

#include "Ifx.h"

function OnMoved()
begin

if(!MAINTENANCE) then
if(LaunchApplication(APPLICATION,"","",SW_SHOWNORMAL,600,LAAW_OPTION_WAIT_INCL_CHILD|LAAW_OPTION_WAIT) < 0) then
MessageBox("Unable to launch.", SEVERE);

elseif(LaunchApplication(APPLICATION1,"","",SW_SHOWNORMAL,600,LAAW_OPTION_WAIT_INCL_CHILD|LAAW_OPTION_WAIT) < 0) then
MessageBox("Unable to launch.", SEVERE);

elseif(LaunchApplication(APPLICATION2,"","",SW_SHOWNORMAL,600,LAAW_OPTION_WAIT_INCL_CHILD|LAAW_OPTION_WAIT) < 0) then
MessageBox("Unable to launch.", SEVERE);

endif;
endif;
end;

Where I went wrong in my script? Is it the nTimeOut (where I have given 600)?
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

The nTimeOut parameter specifies how long LaunchApplication should wait for the process to exit (in milliseconds). Specifying 600 will wait 600 milliseconds (less that 1 second) and will then return. If you would like to wait indefinitely for the process to exit, specify INFINITE for the nTimeOut parameter.
0 Kudos
Rachelbaskaran
Level 5

Hey Josh,

Thanks for your response. It's working.

Thanks again
Rachel
0 Kudos