Jaa


Running an MSI during FBA on Windows Embedded Standard 2009

Perhaps you need to launch an msi to install an application during FBA, and you create and FBA Generic Command in a custom component or in the Extra Resources node of Target Designer to do so. It could look something like this:

Name : MyMSI

Type : FBGenCmd

Extended Properties

Arguments : /i C:\WINDOWS\mymsi.msi /passive

ComponentVSGUID : {00000000-0000-0000-0000-000000000000}

ErrorControl : 0

FilePath : %11%\msiexec.exe

Flags : 0

Phase : 8501

Reboot : FALSE

Start : 1

Timeout : 200

Type : 1

Once your image is deployed you notice that the FBA log reports that the msi was run twice, the first time failing and the second time succeeding. Although this may not have an impact on functionality (the msi installation did succeed, after all) you may want to correct this entry in the log to avoid confusion.

The work around is edit \Windows\inf\syssetup.inf on the pre-FBA image to delete the following entry, and then run FBA:

11,,msiexec.exe,,,"/regserver /q

The timeout value is also interesting. You might see in the log that FBA seems to ignore this value and continue executing other tasks once your command has run (but before the timeout period you specified) or appear to allow your command to execute even if the timeout period specified is shorter than the time needed for your command to complete. The Timeout property used by FBA in FBA Generic Command does not actually kill the thread after a timeout occurs; instead, it reports the timeout to the FBA log and then continues to wait for the thread to complete. The log report can be used for diagnostics purposes, to report threads that run longer than expected.

For more information on FBA in general see this article, and for info on creating FBA commands see this page.

- Lynda

Technorati Tags: XPe,Standard 2009