Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

problem with LaunchAppAndWait()


5 replies to this topic

roberto

roberto
  • Members
  • 8 posts

Posted 22 January 2004 - 17:38

Hi,

I'm a beginner with InstallShield and I'm trying to create an installation setup. In my installation I need to launch several install setup.exe, but when I launch with LaunchAppAndWait() I get the error 1500 "Another install is running".
I use InstallShield developer 8.0 and I used doInstall() and I get other error.

Any ideas?

I need your help

Thanks in advance.

Rober

Roadhawk

Roadhawk
  • Members
  • 9 posts

Posted 22 January 2004 - 17:46

See point 2 from: http://support.insta...ticleid=q104985

If you just ran an InstallShield setup, the engine takes a few seconds at the end of the installation to clean up. During this time Ikernel.exe (the engine file) is running in memory from a previous process; that is why you are not allowed to launch another setup. Waiting a few seconds and running the setup again should resolve this.

Hope this helps rolleyes.gif

roberto

roberto
  • Members
  • 8 posts

Posted 23 January 2004 - 10:10

Thank you Roadhawk for your quickly answer.

But I have some doubts, because in my case, I create a InstallShield setup that runs during all the process of my installation (copy files, create an ODBC link and launch severals installshield setups). Since the main setup I launch other installShield setups (like j2sdk1.4, Acrobat Reader, etc) but I don't understand well your answer, because in my case I think that lKernel.exe (the engine file) is running always, because is from the main InstallShield setup, in other words, my main InstallShield setup run in foreground, and when I'll launch the others installShield Setups, in this moment, the main installshield setup change a background execution and the other installshield setup change to foreground execution. There is installshield setups within the main.

How can I do this?

Need I put the execution of the setup.exe in a specific position (after or before) in the secuence? for example after InstallFinalize or something like this

How can I wait a few seconds? Are there any timer for control this?

I'm very grateful to you if you answer me, because I'm stuck.

Thank you in advance.

Rober





Roadhawk

Roadhawk
  • Members
  • 9 posts

Posted 23 January 2004 - 11:19

I don't know if it's possible to run a setup.exe's from Installshield from within a setup.exe. I think the knowledge base article says not.

To get a better idea of the whole process, download Process Explorer from http://www.sysinternals.com. IKernel.exe is not a child-proces of Setup.exe (is a child-process of the service RPC), so IKernel.exe can be in memory after setup.exe has exited. You have to wait for IKernel.exe to unload from memory before you can start another setup.exe.

Maybe it's better NOT to install all the apps from within an InstallShield executable, but by vbscript or bat/cmd-files (or vb/delphi). (With vbscript you can check whether IKernel.exe is still running or not.)

Another option is to get rid of the setup.exe's and to install the packages with msiexec, not with setup.exe. Find the knowledge base doc Q108166 at http://support.installshield.com.

Good luck.

roberto

roberto
  • Members
  • 8 posts

Posted 23 January 2004 - 11:32

Thanks a million Roadhawk for your help.

I'll follow your advices and I'll try to open other ways.

Thanks a lot.

Rober

Roadhawk

Roadhawk
  • Members
  • 9 posts

Posted 23 January 2004 - 11:49

If you use vbscript to wait for IKernel.exe use something like this:

While ProcessRunning("IKernel.exe")
'sleep, or do something else
Wend

Function ProcessRunning(ProcessName)
Dim colResults, objProcess, objWMI, strWQL
ProcessRunning = False
Set objWMI = GetObject("winmgmts:Root/CIMv2")
strWQL = "SELECT * FROM Win32_Process WHERE Name = '" & ProcessName & "'"
Set colResults = objWMI.ExecQuery(strWQL)
For Each objProcess In colResults
ProcessRunning = True
Next
End Function