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