Why my private binaries do not show up in the image?

Why my private binaries do not show up in the image? I've been asked this question too many times by now. Many partners when testing their private changes have to figure it out the hard way.

The reason why your updated binary doesn't show up in the image is because by default make image picks up package files from %_FLATRELEASEDIR%\prebuilt directory. All you need to do is to figure out which package your dll/exe goes to and delete that package. Here are the steps I do whenever I need to update a dll in an image.

First you need to find which package your dll goes into. There are several way to do that.

So here is what you need to do:

  1. Copy your binary, symbols, map into %_FLATRELEASEDIR%
  2. Find out what package your file is in
    1. Cd %_FLATRELEASEDIR%
    2. "findstr /i [your filename] *.bsm.xml" Ex: findstr /i nk.exe *.bsm.xml
  3. This should return a package's xml file, for example oemxipkernel.bsm.xml. This tells you that it's in the OS package.
  4. Find the prebuilt package and delete it
    1. cd prebuilt
    2. del oemxipkernel.cab.pkg
  5. Makeimg

Makeimg will detect the missing package and rebuild it.