Hi All,
We have an application which attempts to install multiple SIS files. In order to do this it spawns the built in installer on the device using EIKDLL::StartAppL and then waits for the install to complete before starting the next. Unfortunately we cannot find a way to determine when the install is complete. It seems that waiting for the install thread or task to exit fails (as if the thread never exits) - using the handle provided by the EIKDLL call. In addition the broadcast message from the install engine is only sent when the sis file is installed correctly. In our case we need notification when the install has finshed - successfully or otherwise e.g. when the user cancels. Any ideas? Our current device is the SE P900, although the final product also needs to run on N9500 and NSeries60.
I worked on the same problem. You can do it as follows:
// Connection to session
User::LeaveIfError(m_session.Connect());
// Starting the installer
User::LeaveIfError(m_session.StartDocument(path, m_threadId));
// Opening thread for thread id
User::LeaveIfError(m_thread.Open(m_threadId));
// Logging on to thread"));
m_thread.Logon(iStatus);
// Setting active
SetActive();
The above is the code to start the installer and register the active object containing the above code in the installer thread. When the installer thread is done, the active object is notified and its RunL is run.
The above code should resolve your problem. However, there is another problem with the installer. Through the installer process, I did not find a way to get installation result, success or failure. The above code only make sure that the installer is done.
If you find a way to resolve my problem, please let me know.