[HD2 Windows Phone 7 Development] xboxmod:
Create your own WP7 update packages.

The principe:

The goal is to have roms for all WP7 community which can share custom packages without breaking the system updates

A cooker put his certificate in rom so only the cooker sign cabs to have them sendable to the device

This to avoid problems of bad utilisation packages ie to retrieve users informations

But a rom could share multiple developpers certificates, the choice comes to the cooker

And a cooker just have to resign an existing package with his certificate to let it be sendable to his rom

Any developper can make packages he want, when he releases it any cooker can choice to make a package with it

Developers and designers make their customisations they want to device

But they have to never change a system file or it will break the system update process

So sometimes some tricks have to be found to modify some things like the use of .mui files
​

Update Cab Building Process

An update cab is a container for 3 different types of packages.

with ability to replace any files in all part of the rom.(sldr,nk,imgfs)

never need to create a new rom, you can create a cab for what you want (logo,radio & more)

take care update cab modification are not removed by a hardreset.

Canonical

contains the entire contents of the package. It is used for a first-time package install, and if there are any major updates to be issued that would require the complete package.

The file extension is .cab.pkg

Update

contains a binary delta between a package already on the device, and the updated version of that package. if a package change was a simple registry entry - no need to replace all .dll and .exe in that package, just alter the .rgu with a Diff/Patch.

The file extension is .cab.pku

Delete

contain a .dsm file already on the device , and remove all files inside the corresponding package.

The file extension is .cab.pkr

At the root of a package, the .dsm defines the Package structure (all files, registry entries, etc.)

There is a "shadow order" defined in the .dsm as well

- this controls what "priority" .rgu's are compiled together into the device HV.

- a package that shadows another package will override any .rgu entries that shadowed package may contain.

This is important to consider when utilizing .cab.pkgs to obtain your desired end registry.

This shadow order also applies to provxmls inside the package

- a package that shadows another package will override its provxml settings as well.

You can found more technical information in Da_G thread

Beside canonical/update and remove there is other flags in WP7

So use a program which can preserve the flag, dsm builder for ex change them to a bad one

You can find flags for regular(NK/IMGFS) ULDR(SLDR) and Reserved too

If you have no program to make a remove here is a methode:

- Use the default dsm of your package

- Change the version to 0.0.0.0 (but let OS version)

- Remove all files / certificates / dependencies and shadows

- Save the file as that and open it in a hex editor:

- Save you've got it

The delete 40 00 flag is for Regular, 60 ULDR, 70 Reserved

21 00/21 04 For update ULDR, 22 00/22 04 Canonical ULDR

01 00/01 04 For Update regular, 02 00/02 04 canonical regular

You can use the tool DSM Flag Editor to do this.(thx Ruzzichella)

Updates packages need diff files and we need tools for that.

but we can send dll to replace.....

when you make a dsm keep the oem certificate AND add your own.

You can Build your own cab package with WP7 Update Cab Builder

Developers, if you want try this process send me your cab and i will sign it for you to try on the rom.

Cab building process need your personal certificate (.pfx) in tools folder.

you can create your certificate with signcode & convert it to pfx with pvk2pfx.

download link:certificate-tools

and you need to build a rom with this certificate cooked in.(DefaultCerts.dat & MsDefaultCerts.dat )

IMPORTANT:

Never send a cab without your certficate or you won't be able to remove or modify the package

And you won't be able to provide a removal to users

​