[P3400 ROM Development] krazy_about_technology:
While cooking even though we separate files inside different packages, but at the time when imgfs.bin is created, all the files go to \Windows folder. Thats why there cant be two files with same name even when they are in different packages.

Now some apps have common dependencies. Like the DirectShow and mHubVO dlls are needed by Youtube, as well as streaming media. Now what happens is, if you take two packages for these, sometimes the author puts the dependency files in both the packages so that if someone uses one package and not the other, it still works. This mostly happens packages that are made by converting a cab to a package. So if you cook these packages, you need to make sure that they are not putting duplicate files.

The same thing also happens with also happens with registry settings. Somtimes, two or more packages update the same regisrty keys in their .rgu files. SO we need to take care of those too and remove the lines that dont apply to the version of files we are actually using in our kitchen. This is a necessary evil and thats why cooking is not a child's play.

Once a ROM is flashed, and phone boots for the first time, the initialization process takes place. Now the ROM cooks have two ways to initialize their packages : using the .provxml files, this works if you have newer OEM* folders like from Elfin or Opal, it basically requires the Autoshortcut.exe file as well as newer HTCUtil.dll. The other way is the older initflashfiles.txt files inside the packages.

The difference between two methods is that using initflashfile.txt you can only copy files and create folders on the file system, but provxml can be used to perform many different things like registry values, applying themes etc.

So using one of the methods you copy your files to appropriate locations. Do remember that this process if done wildly can decrease the availabel free phone memory noticeably. Thats why we sometimes go a bit furthur and do some programming stuff to minimize this. You people sometimes dont even notice what is happening behind the scene.

I tell you one such experience. Google maps is a package that copies all its files to \Program Files\GoogleMaps but i noticed if i dont copy the files by deleting the initflashfiles.txt, and run GoogleMaps.exe from \Windows, it runs just fine. This works in pro user's rom but in Manila ROMs, the Maps tab of Manila looks for GoogleMaps.exe in Program files folder. So i had a choice to either copy googlemaps.exe into program files folder and waste 2 MB of phone memory or loose the functionality of maps tab of manila.

What i did was the third way i thought of myself. I created a .NET application called GoogleMapsStub.exe and what it does is it runs the googlemaps.exe from windows folder and passes all the information to it that manilla passed to it while running it. This exe is copied into the \program files\GoogleMaps folder by using initflashfiles.txt as GoogleMaps.exe. So now manilla is happy that it has googlemaps.exe in its proper place and i am happy too coz the new exe is only 3.5 kb in size :D You can verify this in v3.1.1 of VanillaManila rom. Look in the program files folder you will get the 4 kb googlemaps.exe, put it on your pc and check its version in its properties, you will get my name there :D And if you check the windows folder, there will be a googlemaps.exe of 2 MB size and a GoogleMapsStub.exe of 4 kb size.

So sometimes hacks like these are necessary in order to make a perfect roms. ROM cooking is just like food cooking, It may appears to be like just putting the ingredients into a cooker and light up the gas stove and wait for the food to cook. But if you try that for first time, your food will not be eatable for sure :D It requires a careful balance of salt, pepper and other things to cook a tasty dish :) I hope i have made myself clear :D