1. Post #1
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Updated. See http://www.facepunch.com/showpost.ph...3&postcount=45 for some free backgrounds and watermarks.

    The Official Windows 7 Device Stage Megathread

    What is a Device Stage?
    A Device Stage is like a fancy welcome center for your devices. When you plug in a device in Windows 7 you'll either see a generic autorun screen, or if your device manufacturer made a Device Stage for that device, you'll see one of those. It's sorta like the old "Lanucher" application from Mac OS 7, but for devices, and much more fancy.


    Eww, Autorun. Let's replace that with something like the image below.


    Example of a Device Stage for a computer

    Why would I want to make one of these?
    They're downright awesome. If there's stuff you do a lot with your devices and you don't want to dig through your computer to do it, a Device Stage can manage those things in one fancy area. Plus, if your device supports it, you can see how much battery life is left, how much space is left, how much signal you have (Cell phones only?), etc.

    Starting
    So you want to make a device stage huh? Okay. There's going to be a few things you need first.

    Windows 7 - Duh. Build 7100 and higher should work just fine.

    Cabarc - Cabarc is a program used to make cabinet files. You'll end up packaging all your files in one. Get it Here. Unzip it to c:\cabarc.

    GUIDGen - GUIDGen is a tool that generates these fancy numbers that you'll use to name stuff. Each one must be unique. There's about 2 to the power of 128 possible combinations of GUIDs, so the chance of having the same one is VERY VERY VERY small. Go Here to make these online.

    IcoFX - IcoFX is a program used to make icons. It's the only program that seems to create working icons. Get it Here

    Image Editor - Photoshop or Paint.NET work well. Plain ol' Windows Paint is not reccomended.

    My slimmed-down dev kit for making Device Stages - Includes the device stage created in this tutorial, along with Microsoft's template graphics. Not available yet.

    Okay, so now that you've got all your programs, now you need to configure your machine to boot in test mode.

    This is the only drawback to making these - they have to be digitally signed or else they're rejected. It's really stupid that Microsoft is putting it under lock and key. That's where test mode comes in. Test mode is no different than regular operation - except you just get an extra watermark on the right bottom corner, and any digitally unsigned driver/package can be installed. Until someone figures out a way to bypass the signing, you have to do this.

    Open the start menu and type in "cmd". (Without quotes). Don't click it yet.

    Right click the cmd program and choose "Run as Administrator". Accept the UAC prompt.

    When the command prompt comes up type in the following:
    Code:
    Bcdedit -set testsigning ON
    Restart your computer.


    Now you're ready to start!

    Setting up the project
    Microsoft explains in their long tutorial how to set up folders and such, and they have a pretty good way of doing it. Open up your C drive, and create a new folder in it called "DeviceExperiences". Inside that folder, create a new folder for the device you're creating. In this tutorial, we'll be making it for my camera. So i'll name it "Cannon-a590is.en-US". That's "Brand-model.languagecode".

    Creating PackageInfo.xml
    PackageInfo.xml is the first file we'll work with. It defines what device this device stage is for. Open up notepad and copy the below code into it:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
    	<MetadataKey>
    		<HardwareIDList>
    		<HardwareID>DOID:PUT_YER_HARDWAREID_HERE</HardwareID>
          		<HardwareID>DOID:PUT_YER_OTHER_HARDWAREID_HERE</HardwareID>
    		</HardwareIDList>
    
    		<Locale default="false">en-US</Locale>
    		<LastModifiedDate>PUT_A_SPECIALLY_FORMATTED_DATE_HERE</LastModifiedDate>
    	</MetadataKey>
    
    	<PackageStructure>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
    	</PackageStructure>
    
    	<Relationships>
    		<ExperienceID>GENERATE_A_GUID_AND_PASTE_IT_HERE</ExperienceID>
    	</Relationships>
    
    </PackageInfo>
    Now let's start with the HardwareID. It's what defines what your device is. Open the start menu and type in "Device Manager". Open it. Plug in your device and find it in the Device Manager. Right click it and open its properties. Click on the Details tab. Open the Property list and go down to "Hardwareids".


    Right click both of them and copy them to notepad. (Note: If you have only 1 HardwareID, just use that one and delete the second hardwareID line in the XML) You want to edit them to be formatted for XML (& = &amp;). So the above would look like this:
    Code:
    USB\VID_04A9&amp;PID_3176&amp;REV_0002
    USB\VID_04A9&amp;PID_3176
    Now paste those into your template, keeping the "DOID:" in front of it. It should look like this now:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
    	<MetadataKey>
    		<HardwareIDList>
    		<HardwareID>DOID:USB\VID_04A9&amp;PID_3176&amp;REV_0002</HardwareID>
          		<HardwareID>DOID:USB\VID_04A9&amp;PID_3176</HardwareID>
    		</HardwareIDList>
    
    		<Locale default="false">en-US</Locale>
    		<LastModifiedDate>PUT_A_SPECIALLY_FORMATTED_DATE_HERE</LastModifiedDate>
    	</MetadataKey>
    
    	<PackageStructure>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
    	</PackageStructure>
    
    	<Relationships>
    		<ExperienceID>GENERATE_A_GUID_AND_PASTE_IT_HERE</ExperienceID>
    	</Relationships>
    
    </PackageInfo>
    (Or if you have only 1 hardwareID, it would look like this:)
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
    	<MetadataKey>
    		<HardwareIDList>
    		<HardwareID>DOID:USB\VID_04A9&amp;PID_3176&amp;REV_0002</HardwareID>
    		</HardwareIDList>
    
    		<Locale default="false">en-US</Locale>
    		<LastModifiedDate>PUT_A_SPECIALLY_FORMATTED_DATE_HERE</LastModifiedDate>
    	</MetadataKey>
    
    	<PackageStructure>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
    	</PackageStructure>
    
    	<Relationships>
    		<ExperienceID>GENERATE_A_GUID_AND_PASTE_IT_HERE</ExperienceID>
    	</Relationships>
    
    </PackageInfo>
    The specially formatted date works like this:
    Code:
    YYYY-MM-DDTHH:MM:SSz
    So it would look like this:
    Code:
    2009-07-28T12:00:00z
    For the GUID, just generate one in GUIDGen and paste it in there.

    Your XML should look like this finished:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
    	<MetadataKey>
    		<HardwareIDList>
    		<HardwareID>DOID:USB\VID_04A9&amp;PID_3176&amp;REV_0002</HardwareID>
          		<HardwareID>DOID:USB\VID_04A9&amp;PID_3176</HardwareID>
    		</HardwareIDList>
    
    		<Locale default="false">en-US</Locale>
    		<LastModifiedDate>2009-07-28T12:00:00z</LastModifiedDate>
    	</MetadataKey>
    
    	<PackageStructure>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
    		<Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
    	</PackageStructure>
    
    	<Relationships>
    		<ExperienceID>7aaf3c13-90f9-49a9-ad37-717b22fb9a18</ExperienceID>
    	</Relationships>
    
    </PackageInfo>
    Now, "Save as" this in notepad as "PackageInfo.xml (Changing the file type to all files, first. Then change the Encoding to "UTF-8".). Save this in C:\DeviceExperiences\yourdevice.en-us\. Congrats, you've finished the first file!


    Creating DeviceInfo.xml
    DeviceInfo.xml tells Windows what type of device it is, what model it is, what it does, etc. Open up notepad again and copy the code below into it:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
    
      <DeviceCategoryList>
        <DeviceCategory>TYPE_OF_DEVICE</DeviceCategory>
      </DeviceCategoryList>
    
      <ModelName>MODEL_NAME</ModelName>
      <DeviceDescription1>FANCY_DESCRIPTION_1</DeviceDescription1>
      <DeviceDescription2>FANCY_DESCRIPTION_2</DeviceDescription2>
      <ModelNumber>MODEL_NUMBER</ModelNumber>
      <Manufacturer>WHO_MADE_YOUR_DEVICE</Manufacturer>
    
      <DeviceIconFile>YOUR_ICON_HERE.ico</DeviceIconFile>
    
    </DeviceInfo>
    Fun. Let's start with type of device. It can be a LOT of things.
    Code:
         <xs:enumeration value="Audio" />
         <xs:enumeration value="Audio.Adapter" />
         <xs:enumeration value="Audio.Headphone" />
         <xs:enumeration value="Audio.Microphone" />
         <xs:enumeration value="Audio.Speakerphone" />
         <xs:enumeration value="Audio.Speakers" />
         <xs:enumeration value="Audio.Speakers.USB" />
         <xs:enumeration value="Audio.Speakers.Wireless" />
         <xs:enumeration value="Communication" />
         <xs:enumeration value="Communication.Headset" />
         <xs:enumeration value="Communication.Headset.Bluetooth" />
         <xs:enumeration value="Communication.Phone" />
         <xs:enumeration value="Communication.Phone.Cell" />
         <xs:enumeration value="Communication.Phone.IP" />
         <xs:enumeration value="Communication.Phone.Speaker" />
         <xs:enumeration value="Component" />
         <xs:enumeration value="Component.AudioAdapter" />
         <xs:enumeration value="Component.Battery" />
         <xs:enumeration value="Component.Bridge" />
         <xs:enumeration value="Component.Bridge.Network" />
         <xs:enumeration value="Component.Bridge.Storage" />
         <xs:enumeration value="Component.Cable" />
         <xs:enumeration value="Component.Cable.Transfer" />
         <xs:enumeration value="Component.Cable.Transfer.USB" />
         <xs:enumeration value="Component.Capture" />
         <xs:enumeration value="Component.Capture.Video" />
         <xs:enumeration value="Component.Controller" />
         <xs:enumeration value="Component.Controller.1394" />
         <xs:enumeration value="Component.Controller.Bluetooth" />
         <xs:enumeration value="Component.Controller.CardBus" />
         <xs:enumeration value="Component.Controller.IR" />
         <xs:enumeration value="Component.Controller.IR.MCE" />
         <xs:enumeration value="Component.Controller.SDH" />
         <xs:enumeration value="Component.Controller.Serial" />
         <xs:enumeration value="Component.Controller.Storage" />
         <xs:enumeration value="Component.Controller.Storage.IDE" />
         <xs:enumeration value="Component.Controller.Storage.iSCSI" />
         <xs:enumeration value="Component.Controller.Storage.Raid" />
         <xs:enumeration value="Component.Controller.Storage.SATA" />
         <xs:enumeration value="Component.Controller.Storage.SCSI" />
         <xs:enumeration value="Component.Controller.USB" />
         <xs:enumeration value="Component.Controller.WUSB" />
         <xs:enumeration value="Component.GraphicsCard" />
         <xs:enumeration value="Component.Hub" />
         <xs:enumeration value="Component.Hub.1394" />
         <xs:enumeration value="Component.Hub.USB" />
         <xs:enumeration value="Component.KVM" />
         <xs:enumeration value="Component.NIC" />
         <xs:enumeration value="Component.SmartCardReader" />
         <xs:enumeration value="Component.System" />
         <xs:enumeration value="Component.System.Board" />
         <xs:enumeration value="Component.System.Memory" />
         <xs:enumeration value="Component.System.Processor" />
         <xs:enumeration value="Component.Tuner" />
         <xs:enumeration value="Component.Tuner.Radio" />
         <xs:enumeration value="Component.Tuner.TV" />
         <xs:enumeration value="Component.Tuner.TV.ATSC" />
         <xs:enumeration value="Component.Tuner.TV.DCB-S" />
         <xs:enumeration value="Component.Tuner.TV.DVB-C" />
         <xs:enumeration value="Component.Tuner.TV.DVB-T" />
         <xs:enumeration value="Component.Tuner.TV.ISDB-T" />
         <xs:enumeration value="Component.Tuner.TV.NTSC" />
         <xs:enumeration value="Component.Tuner.TV.NTSCMJ" />
         <xs:enumeration value="Component.Tuner.TV.OpenCable" />
         <xs:enumeration value="Component.Tuner.TV.PAL" />
         <xs:enumeration value="Component.Tuner.TV.Proprietry" />
         <xs:enumeration value="Component.Tuner.TV.QAM" />
         <xs:enumeration value="Component.Tuner.TV.SECAM" />
         <xs:enumeration value="Computer" />
         <xs:enumeration value="Computer.AllInOne" />
         <xs:enumeration value="Computer.Desktop" />
         <xs:enumeration value="Computer.Desktop.LowProfile" />
         <xs:enumeration value="Computer.Desktop.Pizzabox" />
         <xs:enumeration value="Computer.Handheld" />
         <xs:enumeration value="Computer.Handheld.Windows" />
         <xs:enumeration value="Computer.Laptop" />
         <xs:enumeration value="Computer.Lunchbox" />
         <xs:enumeration value="Computer.Netbook" />
         <xs:enumeration value="Computer.Notebook" />
         <xs:enumeration value="Computer.Notebook.Sub" />
         <xs:enumeration value="Computer.Portable" />
         <xs:enumeration value="Computer.Rackmount" />
         <xs:enumeration value="Computer.Sealed" />
         <xs:enumeration value="Computer.Server" />
         <xs:enumeration value="Computer.SpaceSaving" />
         <xs:enumeration value="Computer.Tablet" />
         <xs:enumeration value="Computer.ThinClient" />
         <xs:enumeration value="Computer.Tower" />
         <xs:enumeration value="Computer.Tower.Mini" />
         <xs:enumeration value="Display" />
         <xs:enumeration value="Display.Monitor" />
         <xs:enumeration value="Display.Monitor.CRT" />
         <xs:enumeration value="Display.Monitor.LCD" />
         <xs:enumeration value="Display.Monitor.Plasma" />
         <xs:enumeration value="Display.PictureFrame" />
         <xs:enumeration value="Display.Projector" />
         <xs:enumeration value="Display.SideShow" />
         <xs:enumeration value="Display.TV" />
         <xs:enumeration value="Display.TV.CRT" />
         <xs:enumeration value="Display.TV.DLP" />
         <xs:enumeration value="Display.TV.LCD" />
         <xs:enumeration value="Display.TV.Plasma" />
         <xs:enumeration value="Health" />
         <xs:enumeration value="Health.BloodGlucose" />
         <xs:enumeration value="Health.BloodPressure" />
         <xs:enumeration value="Health.HeartRate" />
         <xs:enumeration value="Health.Pedometer" />
         <xs:enumeration value="Imaging" />
         <xs:enumeration value="Imaging.Camcorder" />
         <xs:enumeration value="Imaging.Camera" />
         <xs:enumeration value="Imaging.Scanner" />
         <xs:enumeration value="Imaging.Webcam" />
         <xs:enumeration value="Input" />
         <xs:enumeration value="Input.Digitizer" />
         <xs:enumeration value="Input.Digitizer.Multitouch" />
         <xs:enumeration value="Input.Digitizer.Pen" />
         <xs:enumeration value="Input.Digitizer.Touchpad" />
         <xs:enumeration value="Input.Digitizer.Touchscreen" />
         <xs:enumeration value="Input.Gaming" />
         <xs:enumeration value="Input.Gaming.Common" />
         <xs:enumeration value="Input.Gaming.Controller" />
         <xs:enumeration value="Input.Gaming.Gamepad" />
         <xs:enumeration value="Input.Gaming.Generic" />
         <xs:enumeration value="Input.Gaming.Steering" />
         <xs:enumeration value="Input.Keyboard" />
         <xs:enumeration value="Input.KVM" />
         <xs:enumeration value="Input.Mouse" />
         <xs:enumeration value="Input.Remote" />
         <xs:enumeration value="Input.Remote.MCE" />
         <xs:enumeration value="Input.Trackball" />
         <xs:enumeration value="Media" />
         <xs:enumeration value="Media.SmartCard" />
         <xs:enumeration value="Media.Storage" />
         <xs:enumeration value="Media.Storage.Flash" />
         <xs:enumeration value="Media.Storage.Flash.CompactFlash" />
         <xs:enumeration value="Media.Storage.Flash.MemoryStick" />
         <xs:enumeration value="Media.Storage.Flash.SD" />
         <xs:enumeration value="Media.Storage.Optical" />
         <xs:enumeration value="Media.Storage.Optical.BluRay" />
         <xs:enumeration value="Media.Storage.Optical.CD" />
         <xs:enumeration value="Media.Storage.Optical.DVD" />
         <xs:enumeration value="Multimedia" />
         <xs:enumeration value="Multimedia.DMC" />
         <xs:enumeration value="Multimedia.DMP" />
         <xs:enumeration value="Multimedia.DMR" />
         <xs:enumeration value="Multimedia.DMR.MCE" />
         <xs:enumeration value="Multimedia.DMS" />
         <xs:enumeration value="Multimedia.DVR" />
         <xs:enumeration value="Multimedia.GameConsole" />
         <xs:enumeration value="Multimedia.PMP" />
         <xs:enumeration value="Multimedia.VoiceRecorder" />
         <xs:enumeration value="Network" />
         <xs:enumeration value="Network.AccessPoint" />
         <xs:enumeration value="Network.Bluetooth" />
         <xs:enumeration value="Network.Bridge" />
         <xs:enumeration value="Network.Bridge.Wifi2Ether" />
         <xs:enumeration value="Network.HomeAutomation" />
         <xs:enumeration value="Network.MobileBroadband" />
         <xs:enumeration value="Network.Modem" />
         <xs:enumeration value="Network.NIC" />
         <xs:enumeration value="Network.NIC.Ethernet" />
         <xs:enumeration value="Network.NIC.IR" />
         <xs:enumeration value="Network.NIC.PLC" />
         <xs:enumeration value="Network.NIC.Wireless" />
         <xs:enumeration value="Network.PrintServer" />
         <xs:enumeration value="Network.Router" />
         <xs:enumeration value="Network.Router.Wireless" />
         <xs:enumeration value="Network.Switch" />
         <xs:enumeration value="Network.UWB" />
         <xs:enumeration value="Network.WUSB" />
         <xs:enumeration value="Network.WUSB.DWA" />
         <xs:enumeration value="PersonalIdentity" />
         <xs:enumeration value="PersonalIdentity.FaceScanner" />
         <xs:enumeration value="PersonalIdentity.FingerprintReader" />
         <xs:enumeration value="PersonalIdentity.RetinalScanner" />
         <xs:enumeration value="PersonalIdentity.Smartcard" />
         <xs:enumeration value="PersonalIdentity.SmartcardReader" />
         <xs:enumeration value="PrintFax" />
         <xs:enumeration value="PrintFax.FAX" />
         <xs:enumeration value="PrintFax.MFP" />
         <xs:enumeration value="PrintFax.Printer" />
         <xs:enumeration value="PrintFax.Printer.Inkjet" />
         <xs:enumeration value="PrintFax.Printer.Laser" />
         <xs:enumeration value="Sensor" />
         <xs:enumeration value="Sensor.Electrical" />
         <xs:enumeration value="Sensor.Enviromental" />
         <xs:enumeration value="Sensor.Enviromental.Temp" />
         <xs:enumeration value="Sensor.Light" />
         <xs:enumeration value="Sensor.Location" />
         <xs:enumeration value="Sensor.Location.GPS" />
         <xs:enumeration value="Sensor.Mechanical" />
         <xs:enumeration value="Sensor.Motion" />
         <xs:enumeration value="Sensor.Orientation" />
         <xs:enumeration value="Sensor.Proximity" />
         <xs:enumeration value="Sensor.Proximity.NFC" />
         <xs:enumeration value="Sensor.Proximity.RFID" />
         <xs:enumeration value="Storage" />
         <xs:enumeration value="Storage.CardReader" />
         <xs:enumeration value="Storage.CardReader.Combo" />
         <xs:enumeration value="Storage.Changer" />
         <xs:enumeration value="Storage.Changer.Optical" />
         <xs:enumeration value="Storage.FDD" />
         <xs:enumeration value="Storage.HDD" />
         <xs:enumeration value="Storage.HDD.SolidState" />
         <xs:enumeration value="Storage.Network" />
         <xs:enumeration value="Storage.Network.Wireless" />
         <xs:enumeration value="Storage.Optical" />
         <xs:enumeration value="Storage.Optical.Bluray" />
         <xs:enumeration value="Storage.Optical.CD" />
         <xs:enumeration value="Storage.Optical.DVD" />
         <xs:enumeration value="Storage.Tape" />
         <xs:enumeration value="Storage.UFD" />
         <xs:enumeration value="Other" />
    Wow. Let's just go with "Imaging.Camera". Code should now look like this:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
    
      <DeviceCategoryList>
        <DeviceCategory>Imaging.Camera</DeviceCategory>
      </DeviceCategoryList>
    
      <ModelName>MODEL_NAME</ModelName>
      <DeviceDescription1>FANCY_DESCRIPTION_1</DeviceDescription1>
      <DeviceDescription2>FANCY_DESCRIPTION_2</DeviceDescription2>
      <ModelNumber>MODEL_NUMBER</ModelNumber>
      <Manufacturer>WHO_MADE_YOUR_DEVICE</Manufacturer>
    
      <DeviceIconFile>YOUR_ICON_HERE.ico</DeviceIconFile>
    
    </DeviceInfo>
    Everything else is really self-explanitory. Fancy descriptions are like "3MP camera with 4X digital zoom and WiFi". You get the idea.

    Your device icon should be created in IcoFX. I'm not going to go into detail with this, all i can say is that you need to have the sizes of 256x256x32, 48x48x32 32x32x32, 24x24x32, 16x16x32, 48x48x8 32x32x8, 24x24x8, 16x16x8, 48x48x4 32x32x4, 24x24x4, and 16x16x4 in your icon. It's easier to do than it sounds. Save it in c:\DeviceExperiences\Yourdevice.language\DeviceInf ormation. (Create the DeviceInformation folder if you haven't done so already.)

    Your code should look like this when finished:

    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
    
      <DeviceCategoryList>
        <DeviceCategory>Imaging.Camera</DeviceCategory>
      </DeviceCategoryList>
    
      <ModelName>PowerShot</ModelName>
      <DeviceDescription1>Camera with 8.0MP and 4x digital zoom</DeviceDescription1>
      <DeviceDescription2>Shoots in both 4:3 and 16:9 widescreen</DeviceDescription2>
      <ModelNumber>a590is</ModelNumber>
      <Manufacturer>Canon</Manufacturer>
    
      <DeviceIconFile>a590is.ico</DeviceIconFile>
    
    </DeviceInfo>
    Now, save your code as "DeviceInfo.xml" using the same steps as before, but this time in c:\DeviceExperiences\Yourdevice.en-us\DeviceInformation. Viola.

    SKIP DOWN TO PACKAGING AND TESTING IF ALL YOU WANT IS A CUSTOM ICON

    Behavior.XML and Resource.XML

    Here's the hard part - making the actual "Device Stage". The Device Stage is composed of a lot of elements. Here's a fancy diagram:


    Complicated? Not really. Let's start with the graphics you'll need. Open up your image editor and create 6 images. All images are in the .png format.

    Two will be 1213x270 - the watermark and the background. The watermark must be a transparent image. Call the background "sample_background" and the watermark "sample_watermark".

    One will be 300x300 - that'll be the image that shows up in the taskbar. It's transparent too. Call it "sample_launcher".

    Another two will be 150x50 - the logos. They are transparent too. Call them "sample_logo1" and "sample_logo2", respectively.

    And finally, the last one can be anything under 500x500. This will be the "Hero" image. Call it "sample_hero_device".

    Save all these images when you've created them in c:\DeviceExperiences\yourdevice.en-us\DeviceStage\Device\en-us (Create the DeviceStage, Device, and en-us folders if you haven't done so already.)

    Now for the XML. Open up notepad and paste the following code in:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <deviceBehavior xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceBehavior" experienceId="{GUID_FROM_PACKAGEINFO_XML}">
    
      <header watermarkAlign="left" backgroundColor="#FF000000" textColor="#FFFFFFFF" backgroundImage="sample_background.png" watermarkImage="sample_watermark.png" sheen="False">
    
        <modelInfo image="sample_hero_device.png" launcherThumbnail="sample_launcher.png" />
    
        <logos split="horizontal">
          <logo halign="right" valign="middle" image="sample_logo1.png" url="URL_FOR_FIRST_LOGO" tooltip="TOOLTIP1" />
          <logo halign="right" valign="middle" image="sample_logo2.png" url="URL_FOR_SECOND_LOGO" tooltip="TOOLTIP2" />
        </logos>
    
        <marketingBullets>
          <bullet id="BULLET1" />
          <bullet id="BULLET2" />
          <bullet id="BULLET3" />
        </marketingBullets>
      </header>
    
      <appearance textColor="#FF000000" descriptionColor="#FF727272" frameColor="#FF0B346B" backgroundColor="#FFFDFDFD" sheen="false" />
    
      <statusItems statusPropList="prop:System.Devices.NewPictures;System.Devices.StorageFreeSpacePercent;" statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
          <statusLink statusProp="System.Devices.StorageFreeSpacePercent" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
          <statusLink statusProp="System.Devices.NewPictures" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
        </statusLinks>
    
      </statusItems>
    
      <taskCategoryMapping>
    
    
        <!-- DEFAULT WINDOWS 7 TASKS -->
    
        <!-- Windows 7 Task Copy your pictures and videos -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
    
        <!-- Windows 7 Task Browse device storage -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
    
        <!-- Windows 7 Change settings -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{c463887e-0db9-46b9-8c73-9de665d0a62b}" />
    
      </taskCategoryMapping>
    </deviceBehavior>
    Replace the GUID_FROM_PACKAGEINFO_XML with the "ExperienceID" from packageinfo.xml you entered earlier. Keep the {} brackets.

    Replace the URL_FOR_X_LOGO with the URLs of your choice. If the first logo was a microsoft logo, you'd want it to be http://www.microsoft.com.

    StatusItems and StatusLinks aren't easy to explain without a lengthy chart. If for some reason you don't want to see free space or your device doesn't support it, replace the <statusitems> section with this:

    Code:
      <statusItems statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
        </statusLinks>
    
      </statusItems>
    Here's how it looks finished:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <deviceBehavior xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceBehavior" experienceId="{7aaf3c13-90f9-49a9-ad37-717b22fb9a18}">
    
      <header watermarkAlign="left" backgroundColor="#FF000000" textColor="#FFFFFFFF" backgroundImage="sample_background.png" watermarkImage="sample_watermark.png" sheen="False">
    
        <modelInfo image="sample_hero_device.png" launcherThumbnail="sample_launcher.png" />
    
        <logos split="horizontal">
          <logo halign="right" valign="middle" image="sample_logo1.png" url="http://www.canon.com" tooltip="TOOLTIP1" />
          <logo halign="right" valign="middle" image="sample_logo2.png" url="http://www.usa.canon.com/consumer/controller?act=ModelInfoAct&amp;fcategoryid=221&amp;modelid=16336" tooltip="TOOLTIP2" />
        </logos>
    
        <marketingBullets>
          <bullet id="BULLET1" />
          <bullet id="BULLET2" />
          <bullet id="BULLET3" />
        </marketingBullets>
      </header>
    
      <appearance textColor="#FF000000" descriptionColor="#FF727272" frameColor="#FF0B346B" backgroundColor="#FFFDFDFD" sheen="false" />
    
      <statusItems statusPropList="prop:System.Devices.NewPictures;System.Devices.StorageFreeSpacePercent;" statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
          <statusLink statusProp="System.Devices.StorageFreeSpacePercent" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
          <statusLink statusProp="System.Devices.NewPictures" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
        </statusLinks>
    
      </statusItems>
    
      <taskCategoryMapping>
    
    
        <!-- DEFAULT WINDOWS 7 TASKS -->
    
        <!-- Windows 7 Task Copy your pictures and videos -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
    
        <!-- Windows 7 Task Browse device storage -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
    
        <!-- Windows 7 Change settings -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{c463887e-0db9-46b9-8c73-9de665d0a62b}" />
    
      </taskCategoryMapping>
    </deviceBehavior>
    Save as behavior.xml using the steps you used before. Save in c:\DeviceExperiences\yourdevice.en-us\DeviceStage\Device\en-us.

    Two more to go! Open up notepad and paste the following code in:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <stringTable xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceResources">
      <string id="TOOLTIP1">LOGO_1_TOOLTIP</string>
      <string id="TOOLTIP2">LOGO_2_TOOLTIP</string>
      <string id="BULLET1">FANCY_BULLETED_ITEM_1</string>
      <string id="BULLET2">FANCY_BULLETED_ITEM_2</string>
      <string id="BULLET3">FANCY_BULLETED_ITEM_3</string>
    </stringTable>
    The tooltips are what appear when you hover over the logos.

    The bullets are what appear when your device isn't plugged in or when statuses aren't available.

    Finished code:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <stringTable xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceResources">
      <string id="TOOLTIP1">Visit Canon</string>
      <string id="TOOLTIP2">Visit the A590is Website</string>
      <string id="BULLET1">8 Megapixel camera with 4x digital zoom</string>
      <string id="BULLET2">Shoots in both 4:3 and 16:9 widescreen</string>
      <string id="BULLET3">Face detection for taking pictures</string>
    </stringTable>
    Save as resource.xml using the steps used before, and save it in c:\DeviceExperiences\yourdevice.en-us\DeviceStage\Device\en-us.

    WindowsInformation.xml

    Last one! Open up notepad and paste the following code in:
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <WindowsInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">
      <ShowDeviceInDisconnectedState>true</ShowDeviceInDisconnectedState>
      <LaunchDeviceStageOnDeviceConnect>true</LaunchDeviceStageOnDeviceConnect>
      <LaunchDeviceStageFromExplorer>true</LaunchDeviceStageFromExplorer>
    </WindowsInfo>
    Don't even touch this. Save it as WindowsInfo.xml using the steps used before, and save it in c:\DeviceExperiences\yourdevice.en-us\WindowsInformation (Create the WindowsInfo folder if you haven't done so already.)

    Done! Woot! Now to package it up.

    Packaging and testing

    Alright, now to package it. First of all we need another GUID. Go to guidgen.com and get a new guid. Paste it into notepad. Select only the text and copy it again. You'll need this shortly.

    Open the start menu and type in "cmd". (Without quotes). Don't click it yet.

    Right click the cmd program and choose "Run as Administrator". Accept the UAC prompt.

    Type in the following and press enter.
    Code:
    cd c:\deviceexperiences\yourdevice.en-us
    Where yourdevice.en-us is the name of your folder.

    Now, type in the following BUT DO NOT PRESS ENTER:
    Code:
    c:\cabarc\bin\cabarc.exe -p -r N
    Now, right click anywhere in the command prompt window and click paste. The GUID should appear after the code. Make sure there is a space after the N in the above command.

    Add to that code
    Code:
    c:\cabarc\bin\cabarc.exe -p -r N YOUR_GUID_HERE.devicemetadata-ms *.*
    So it would look something like this
    Code:
    c:\cabarc\bin\cabarc.exe -p -r N 07deb856-fc6e-4fb9-8add-d8f2cf8722c9.devicemetadata-ms *.*
    Press enter. It should package it. If not, you're doing it wrong.

    Now, take that package (Which will be in c:\DeviceExperiences\yourdevice.en-us) and copy it to %programdata%\Microsoft\Windows\DeviceMetadataStor e\en-us. Viola. Plug in your device and you should se its icon pop up at the bottom.

    F.A.Q

    It's not showing up! (And I'm in Great Britain or some other country outside the US!)
    Probably because this tutorial is designed for people in the US, since i don't know the other locale codes. Replace en-us with your designated locale code and try again. (I think Great Britain is en-GB).


    It's not showing up! (And I'm in the US or I set my locale!)
    Uhoh. I dunno. Make sure it packaged right. If it says no tasks found when you open it through Devices & Printers, PM me your behavior.xml.

    When are we going to get your devkit?
    When i have time to zip it and upload it, so, soon.

    Can I add my own tasks?
    Yeah, I haven't got that far yet.
    Reply With Quote Edit / Delete Reply United States Show Events Useful Useful x 8Informative Informative x 1Artistic Artistic x 1Agree Agree x 1 (list)

  2. Post #2
    nubcakez's Avatar
    January 2008
    2,586 Posts
    Nice, but seems too complicated
    Reply With Quote Edit / Delete Reply Canada Show Events Agree Agree x 11Disagree Disagree x 1 (list)

  3. Post #3
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Nice, but seems too complicated
    It really doesn't get any simpler. And when you read through it you'll see it's not that hard at all.
    Reply With Quote Edit / Delete Reply United States Show Events Agree Agree x 1 (list)

  4. Post #4
    Gold Member
    Roast Beast's Avatar
    September 2008
    3,109 Posts
    Very cool. Can this method or something similar be used to make a better version of a Device Stage entry? For example, this is how my USB mic shows up in Device Stage:



    I'd kind of like to fix that

  5. Post #5
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Very cool. Can this method or something similar be used to make a better version of a Device Stage entry? For example, this is how my USB mic shows up in Device Stage:



    I'd kind of like to fix that
    Yup. Just don't do the behavior.xml and resource.xml part. What the hell is that? A fridge?
    Reply With Quote Edit / Delete Reply United States Show Events Funny Funny x 10Agree Agree x 2 (list)

  6. Post #6
    Gold Member
    Panda X's Avatar
    August 2006
    9,825 Posts
    Very cool. Can this method or something similar be used to make a better version of a Device Stage entry? For example, this is how my USB mic shows up in Device Stage:



    I'd kind of like to fix that
    Oh so that's my mic...
    Reply With Quote Edit / Delete Reply United States Show Events Funny Funny x 1 (list)

  7. Post #7
    Gold Member
    Roast Beast's Avatar
    September 2008
    3,109 Posts
    Yup. Just don't do the behavior.xml and resource.xml part. What the hell is that? A fridge?
    You got me

    What if it doesn't actually have a Device Stage page of its own? All of my devices just open Properties or some other window when I click on them.

  8. Post #8
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    You got me

    What if it doesn't actually have a Device Stage page of its own? All of my devices just open Properties or some other window when I click on them.
    Just opens properties or the other window.

  9. Post #9
    Gold Member
    Roast Beast's Avatar
    September 2008
    3,109 Posts
    Just opens properties or the other window.
    I mean, if I wanted to could I do the behavior.xml and resources.xml stuff to give it a page?

  10. Post #10
    Dansil's Avatar
    June 2009
    79 Posts
    Nice tutorial Jimmy

    Edited:

    No seriously good job, this is awesome.
    Reply With Quote Edit / Delete Reply United States Show Events Agree Agree x 1 (list)

  11. Post #11
    nubcakez's Avatar
    January 2008
    2,586 Posts
    It really doesn't get any simpler. And when you read through it you'll see it's not that hard at all.
    Yea i know, but walls of text scares me
    Reply With Quote Edit / Delete Reply Canada Show Events Dumb Dumb x 1 (list)

  12. Post #12
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    I mean, if I wanted to could I do the behavior.xml and resources.xml stuff to give it a page?
    Yeah. Any device listed in the list should be able to have a device stage.

  13. Post #13
    Gold Member
    YodaEXE's Avatar
    December 2005
    1,473 Posts
    Damn, I tried to do this for my Sony Dualshock 3 controller, but I can't get it to work. I think the problem is that I don't know what to use for the Hardware ID, as there were too many things listed. I've included screencaps to show you.



    Any suggestions?

  14. Post #14
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Damn, I tried to do this for my Sony Dualshock 3 controller, but I can't get it to work. I think the problem is that I don't know what to use for the Hardware ID, as there were too many things listed. I've included screencaps to show you.



    Any suggestions?
    Just use the first two on the left.

  15. Post #15
    Gold Member
    YodaEXE's Avatar
    December 2005
    1,473 Posts
    Just use the first two on the left.
    Darn, that's what I tried and no luck. I also thought that maybe since I wasn't doing a camera or something, it may not already have a device stage preset thingy or something, so I just tried making my own using my iPod Touch. No luck again, although my iPod now has a proper image in Computer. Not sure if it did before though.

    EDIT: By what I said above I mean the second time through (doing my iPod this time), I didn't skip to the end. I actually made images, etc.

    Also, something else. My computer doesn't do pop-up things properly (namely, Auto-play). So, I never get the little popups when I plug stuff in. I should be able to just go into Devices and Printers and double-click my device and have it open the Device Stage, correct? I mean, it does it for printers, but I wanted to be sure.

  16. Post #16
    Lukus-NAESA(R)'s Avatar
    July 2009
    102 Posts
    Quick, before he makes another 200 zillion threads to clog FP up.

    (User was permabanned for this post ("Alt of a permabanned user." - lazyV))
    Reply With Quote Edit / Delete Reply United Kingdom Show Events Dumb Dumb x 1Disagree Disagree x 1 (list)

  17. Post #17
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Darn, that's what I tried and no luck. I also thought that maybe since I wasn't doing a camera or something, it may not already have a device stage preset thingy or something, so I just tried making my own using my iPod Touch. No luck again, although my iPod now has a proper image in Computer. Not sure if it did before though.

    EDIT: By what I said above I mean the second time through (doing my iPod this time), I didn't skip to the end. I actually made images, etc.

    Also, something else. My computer doesn't do pop-up things properly (namely, Auto-play). So, I never get the little popups when I plug stuff in. I should be able to just go into Devices and Printers and double-click my device and have it open the Device Stage, correct? I mean, it does it for printers, but I wanted to be sure.
    That's really odd. Here's the XML for my touch, see if you missed something:

    PackageInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
      <MetadataKey>
        <HardwareIDList>
    	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293&amp;REV_0001</HardwareID>
          	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293</HardwareID>
        </HardwareIDList>
        <Locale default="true">en-US</Locale>
        <LastModifiedDate>2009-07-28T12:00:00z</LastModifiedDate>
      </MetadataKey>
    
      <PackageStructure>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
      </PackageStructure>
    
      <Relationships>
        <ExperienceID>ad5b6e9c-080b-4312-a775-06c2403bf1d6</ExperienceID>
      </Relationships>
    
    </PackageInfo>
    DeviceInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
      <DeviceCategoryList>
        <DeviceCategory>Multimedia.PMP</DeviceCategory>
      </DeviceCategoryList>
      <ModelName>Touch 2G</ModelName>
      <DeviceDescription1>Multi-touch portable media player</DeviceDescription1>
      <DeviceDescription2>Plays games, movies, music, and more</DeviceDescription2>
      <ModelNumber>2G</ModelNumber>
      <Manufacturer>Apple</Manufacturer>
      <DeviceIconFile>sample_device_icon.ico</DeviceIconFile>
    </DeviceInfo>
    behavior.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <deviceBehavior xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceBehavior" experienceId="{ad5b6e9c-080b-4312-a775-06c2403bf1d6}">
    
      <header watermarkAlign="left" backgroundColor="#FF000000" textColor="#FFFFFFFF" backgroundImage="sample_background.png" watermarkImage="sample_watermark.png" sheen="false">
    
        <modelInfo image="sample_hero_device.png" launcherThumbnail="sample_launcher.png" />
    
        <logos split="horizontal">
          <logo halign="right" valign="middle" image="sample_logo1.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP1" />
          <logo halign="right" valign="middle" image="sample_logo2.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP2" />
        </logos>
    
        <marketingBullets>
          <bullet id="BULLET1" />
          <bullet id="BULLET2" />
          <bullet id="BULLET3" />
        </marketingBullets>
      </header>
    
      <appearance textColor="#FF000000" descriptionColor="#FF727272" frameColor="#FF0B346B" backgroundColor="#FFFDFDFD" sheen="false" />
    
      <statusItems statusPropList="prop:System.Sync.State;System.Devices.BatteryPlusCharging;System.Devices.NewPictures;System.Devices.StorageFreeSpacePercent;" statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
          <statusLink statusProp="System.Devices.StorageFreeSpacePercent" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
          <statusLink statusProp="System.Sync.State" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
          <statusLink statusProp="System.Devices.NewPictures" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
       </statusLinks>
    
      </statusItems>
    
      <taskCategoryMapping>
    
    
        <!-- DEFAULT WINDOWS 7 TASKS -->
    
        <!-- Windows 7 Task Setup sync -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
    
        <!-- Windows 7 Task Copy your pictures and videos -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
    
        <!-- Windows 7 Task Browse device storage -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
    
        <!-- Windows 7 Set Ringtones -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{633bd6e8-0f50-4e28-b330-cc22fa995702}" />
    
        <!-- Windows 7 Manage your media -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{54e6d7d6-c881-495f-8651-c47a803d2fce}" />
    
        <!-- Windows 7 Change settings -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{c463887e-0db9-46b9-8c73-9de665d0a62b}" />
    
      </taskCategoryMapping>
    </deviceBehavior>
    (I left in all the default tasks and stuff, it's failproof that way.)

    resource.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <stringTable xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceResources">
      <string id="TOOLTIP1">Visit Apple.com</string>
      <string id="TOOLTIP2">Visit the iPod touch website</string>
      <string id="BULLET1">Multi-touch portable media player</string>
      <string id="BULLET2">Plays games, movies, music, and more</string>
      <string id="BULLET3">More applications available at the "App Store"</string>
    </stringTable>
    WindowsInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <WindowsInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">
      <ShowDeviceInDisconnectedState>true</ShowDeviceInDisconnectedState>
      <LaunchDeviceStageOnDeviceConnect>true</LaunchDeviceStageOnDeviceConnect>
      <LaunchDeviceStageFromExplorer>true</LaunchDeviceStageFromExplorer>
    </WindowsInfo>
    Here's how it's layed out:





    Quick, before he makes another 200 zillion threads to clog FP up.
    What? I have 3 other threads in here, that's not a lot...

  18. Post #18
    Gold Member
    YodaEXE's Avatar
    December 2005
    1,473 Posts
    That's really odd. Here's the XML for my touch, see if you missed something:

    PackageInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
      <MetadataKey>
        <HardwareIDList>
    	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293&amp;REV_0001</HardwareID>
          	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293</HardwareID>
        </HardwareIDList>
        <Locale default="true">en-US</Locale>
        <LastModifiedDate>2009-07-28T12:00:00z</LastModifiedDate>
      </MetadataKey>
    
      <PackageStructure>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
      </PackageStructure>
    
      <Relationships>
        <ExperienceID>ad5b6e9c-080b-4312-a775-06c2403bf1d6</ExperienceID>
      </Relationships>
    
    </PackageInfo>
    DeviceInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
      <DeviceCategoryList>
        <DeviceCategory>Multimedia.PMP</DeviceCategory>
      </DeviceCategoryList>
      <ModelName>Touch 2G</ModelName>
      <DeviceDescription1>Multi-touch portable media player</DeviceDescription1>
      <DeviceDescription2>Plays games, movies, music, and more</DeviceDescription2>
      <ModelNumber>2G</ModelNumber>
      <Manufacturer>Apple</Manufacturer>
      <DeviceIconFile>sample_device_icon.ico</DeviceIconFile>
    </DeviceInfo>
    behavior.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <deviceBehavior xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceBehavior" experienceId="{ad5b6e9c-080b-4312-a775-06c2403bf1d6}">
    
      <header watermarkAlign="left" backgroundColor="#FF000000" textColor="#FFFFFFFF" backgroundImage="sample_background.png" watermarkImage="sample_watermark.png" sheen="false">
    
        <modelInfo image="sample_hero_device.png" launcherThumbnail="sample_launcher.png" />
    
        <logos split="horizontal">
          <logo halign="right" valign="middle" image="sample_logo1.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP1" />
          <logo halign="right" valign="middle" image="sample_logo2.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP2" />
        </logos>
    
        <marketingBullets>
          <bullet id="BULLET1" />
          <bullet id="BULLET2" />
          <bullet id="BULLET3" />
        </marketingBullets>
      </header>
    
      <appearance textColor="#FF000000" descriptionColor="#FF727272" frameColor="#FF0B346B" backgroundColor="#FFFDFDFD" sheen="false" />
    
      <statusItems statusPropList="prop:System.Sync.State;System.Devices.BatteryPlusCharging;System.Devices.NewPictures;System.Devices.StorageFreeSpacePercent;" statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
          <statusLink statusProp="System.Devices.StorageFreeSpacePercent" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
          <statusLink statusProp="System.Sync.State" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
          <statusLink statusProp="System.Devices.NewPictures" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
       </statusLinks>
    
      </statusItems>
    
      <taskCategoryMapping>
    
    
        <!-- DEFAULT WINDOWS 7 TASKS -->
    
        <!-- Windows 7 Task Setup sync -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
    
        <!-- Windows 7 Task Copy your pictures and videos -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
    
        <!-- Windows 7 Task Browse device storage -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
    
        <!-- Windows 7 Set Ringtones -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{633bd6e8-0f50-4e28-b330-cc22fa995702}" />
    
        <!-- Windows 7 Manage your media -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{54e6d7d6-c881-495f-8651-c47a803d2fce}" />
    
        <!-- Windows 7 Change settings -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{c463887e-0db9-46b9-8c73-9de665d0a62b}" />
    
      </taskCategoryMapping>
    </deviceBehavior>
    (I left in all the default tasks and stuff, it's failproof that way.)

    resource.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <stringTable xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceResources">
      <string id="TOOLTIP1">Visit Apple.com</string>
      <string id="TOOLTIP2">Visit the iPod touch website</string>
      <string id="BULLET1">Multi-touch portable media player</string>
      <string id="BULLET2">Plays games, movies, music, and more</string>
      <string id="BULLET3">More applications available at the "App Store"</string>
    </stringTable>
    WindowsInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <WindowsInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">
      <ShowDeviceInDisconnectedState>true</ShowDeviceInDisconnectedState>
      <LaunchDeviceStageOnDeviceConnect>true</LaunchDeviceStageOnDeviceConnect>
      <LaunchDeviceStageFromExplorer>true</LaunchDeviceStageFromExplorer>
    </WindowsInfo>
    Here's how it's layed out:







    What? I have 3 other threads in here, that's not a lot...
    Alright, well, some progress has been made. After using your files, and making sure that all my stuff was in the proper locations (had to fix the WindowsInformation one), I can now get it named differently in Devices and Printers. However, double-clicking on it still brings up the standard properties window. Still can't get a Device Stage to show up. Not really sure why that would be. I'll keep playing with it and see what I can get it to do.

  19. Post #19
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Alright, well, some progress has been made. After using your files, and making sure that all my stuff was in the proper locations (had to fix the WindowsInformation one), I can now get it named differently in Devices and Printers. However, double-clicking on it still brings up the standard properties window. Still can't get a Device Stage to show up. Not really sure why that would be. I'll keep playing with it and see what I can get it to do.
    Is the iPod plugged in? Silly question but it doesn't work unless it is.

  20. Post #20
    Gold Member
    YodaEXE's Avatar
    December 2005
    1,473 Posts
    Is the iPod plugged in? Silly question but it doesn't work unless it is.
    Yep, it was. It's strange, because if I double-click a printer, the Device Stage comes up just fine, even a networked one. But for anything else it just brings up the properties page. I'm wondering if my install is just being stupid.

  21. Post #21
    ShaRose_'s Avatar
    March 2008
    337 Posts
    By the looks of it, everything I did up before this was correct, except it needed to be signed. Damn.

  22. Post #22
    Gold Member
    Dalto11's Avatar
    September 2006
    1,969 Posts
    Well, I followed it all word for word, and I did it for my Blackjack 2. It only had 1 hardware ID though, so I just double pasted it, since yeah, I had no clue what to do. Finished it all, and go figure it didn't work. My question is, could that be why? And when you said restart after the very first command line entry, did you mean my computer or the command prompt. Wasn't clear on that. But I've got it all set up to work well, just have to get it working.

    EDIT:
    I think my problem is in the fact that my phone doesn't pop up an auto-play window, and Windows Mobile just syncs when I plug it in.

    EDIT:
    Yeah, it was the fact that the phone didn't do the whole auto-play thing. This little GoGear MP3 player did, so I switched the hardware ids around, and compiled another one, and this is what it would have looked like:



    A bit too jagged.

  23. Post #23
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Well, I followed it all word for word, and I did it for my Blackjack 2. It only had 1 hardware ID though, so I just double pasted it, since yeah, I had no clue what to do. Finished it all, and go figure it didn't work. My question is, could that be why? And when you said restart after the very first command line entry, did you mean my computer or the command prompt. Wasn't clear on that. But I've got it all set up to work well, just have to get it working.

    EDIT:
    I think my problem is in the fact that my phone doesn't pop up an auto-play window, and Windows Mobile just syncs when I plug it in.

    EDIT:
    Yeah, it was the fact that the phone didn't do the whole auto-play thing. This little GoGear MP3 player did, so I switched the hardware ids around, and compiled another one, and this is what it would have looked like:



    A bit too jagged.
    Cool, that means this tutorial works. You're meant to restart your computer - i'll fix that. If you have one HardwareID you just list one, i'll fix that too.

  24. Post #24
    Lukus-NAESA(R)'s Avatar
    July 2009
    102 Posts
    That's really odd. Here's the XML for my touch, see if you missed something:

    PackageInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">
    
      <MetadataKey>
        <HardwareIDList>
    	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293&amp;REV_0001</HardwareID>
          	<HardwareID>DOID:USB\VID_05AC&amp;PID_1293</HardwareID>
        </HardwareIDList>
        <Locale default="true">en-US</Locale>
        <LastModifiedDate>2009-07-28T12:00:00z</LastModifiedDate>
      </MetadataKey>
    
      <PackageStructure>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata>
        <Metadata MetadataID="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceStage/2008/1/">DeviceStage</Metadata>
      </PackageStructure>
    
      <Relationships>
        <ExperienceID>ad5b6e9c-080b-4312-a775-06c2403bf1d6</ExperienceID>
      </Relationships>
    
    </PackageInfo>
    DeviceInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">
      <DeviceCategoryList>
        <DeviceCategory>Multimedia.PMP</DeviceCategory>
      </DeviceCategoryList>
      <ModelName>Touch 2G</ModelName>
      <DeviceDescription1>Multi-touch portable media player</DeviceDescription1>
      <DeviceDescription2>Plays games, movies, music, and more</DeviceDescription2>
      <ModelNumber>2G</ModelNumber>
      <Manufacturer>Apple</Manufacturer>
      <DeviceIconFile>sample_device_icon.ico</DeviceIconFile>
    </DeviceInfo>
    behavior.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <deviceBehavior xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceBehavior" experienceId="{ad5b6e9c-080b-4312-a775-06c2403bf1d6}">
    
      <header watermarkAlign="left" backgroundColor="#FF000000" textColor="#FFFFFFFF" backgroundImage="sample_background.png" watermarkImage="sample_watermark.png" sheen="false">
    
        <modelInfo image="sample_hero_device.png" launcherThumbnail="sample_launcher.png" />
    
        <logos split="horizontal">
          <logo halign="right" valign="middle" image="sample_logo1.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP1" />
          <logo halign="right" valign="middle" image="sample_logo2.png" url="https://www.contoso.org/fabrikam/index.html" tooltip="TOOLTIP2" />
        </logos>
    
        <marketingBullets>
          <bullet id="BULLET1" />
          <bullet id="BULLET2" />
          <bullet id="BULLET3" />
        </marketingBullets>
      </header>
    
      <appearance textColor="#FF000000" descriptionColor="#FF727272" frameColor="#FF0B346B" backgroundColor="#FFFDFDFD" sheen="false" />
    
      <statusItems statusPropList="prop:System.Sync.State;System.Devices.BatteryPlusCharging;System.Devices.NewPictures;System.Devices.StorageFreeSpacePercent;" statusProvider="{c2dae44d-c850-425c-b466-d8cbc1469f5d}">
    
        <statusLinks>
          <statusLink statusProp="System.Devices.StorageFreeSpacePercent" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
          <statusLink statusProp="System.Sync.State" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
          <statusLink statusProp="System.Devices.NewPictures" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
       </statusLinks>
    
      </statusItems>
    
      <taskCategoryMapping>
    
    
        <!-- DEFAULT WINDOWS 7 TASKS -->
    
        <!-- Windows 7 Task Setup sync -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{241ed13e-92eb-4d9e-a47d-be3aff03b1b9}" />
    
        <!-- Windows 7 Task Copy your pictures and videos -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{d5c93de7-5ac4-4698-acea-d9a02385cd04}" />
    
        <!-- Windows 7 Task Browse device storage -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{29e7ef4e-b212-4bf9-b95b-1e073fba48e8}" />
    
        <!-- Windows 7 Set Ringtones -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{633bd6e8-0f50-4e28-b330-cc22fa995702}" />
    
        <!-- Windows 7 Manage your media -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{54e6d7d6-c881-495f-8651-c47a803d2fce}" />
    
        <!-- Windows 7 Change settings -->
        <taskRef taskGroupGuid="{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}" taskId="{c463887e-0db9-46b9-8c73-9de665d0a62b}" />
    
      </taskCategoryMapping>
    </deviceBehavior>
    (I left in all the default tasks and stuff, it's failproof that way.)

    resource.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <stringTable xmlns="http://schemas.microsoft.com/windows/2008/deviceExperienceResources">
      <string id="TOOLTIP1">Visit Apple.com</string>
      <string id="TOOLTIP2">Visit the iPod touch website</string>
      <string id="BULLET1">Multi-touch portable media player</string>
      <string id="BULLET2">Plays games, movies, music, and more</string>
      <string id="BULLET3">More applications available at the "App Store"</string>
    </stringTable>
    WindowsInfo.xml
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <WindowsInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">
      <ShowDeviceInDisconnectedState>true</ShowDeviceInDisconnectedState>
      <LaunchDeviceStageOnDeviceConnect>true</LaunchDeviceStageOnDeviceConnect>
      <LaunchDeviceStageFromExplorer>true</LaunchDeviceStageFromExplorer>
    </WindowsInfo>
    Here's how it's layed out:







    What? I have 3 other threads in here, that's not a lot...
    Then in your profile you have 12+ pages of threads.
    Reply With Quote Edit / Delete Reply United Kingdom Show Events Dumb Dumb x 4 (list)

  25. Post #25
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Then in your profile you have 12+ pages of threads.
    And? Is there a limit to how many threads i'm allowed to create? I like helping people out and starting discussions, it's not like i'm spamming the forums.
    Reply With Quote Edit / Delete Reply United States Show Events Agree Agree x 5 (list)

  26. Post #26
    Gold Member
    Panda X's Avatar
    August 2006
    9,825 Posts
    Then in your profile you have 12+ pages of threads.
    Why the fuck did you quote that whole post?
    Reply With Quote Edit / Delete Reply United States Show Events Agree Agree x 4 (list)

  27. Post #27
    Dennab
    May 2007
    1,532 Posts
    all this work for something so useless
    Reply With Quote Edit / Delete Reply United States Show Events Dumb Dumb x 1Agree Agree x 1 (list)

  28. Post #28
    Gold Member
    Dalto11's Avatar
    September 2006
    1,969 Posts
    Cool, that means this tutorial works. You're meant to restart your computer - i'll fix that. If you have one HardwareID you just list one, i'll fix that too.
    Yeah, and it works well. I think I may do one for my flash drive and Finepix S700. Since they both pull up an autoplay option. This is pretty cool. It requires a bit of time, but its fun to tinker with. Good tutorial Jimmy.

  29. Post #29
    Gold Member
    Druchii's Avatar
    October 2006
    1,012 Posts


    Fuck yeah Jimmy!

    Although, i have issues getting it to work with the Mass Storage Device attached to the phone :(
    Reply With Quote Edit / Delete Reply United Kingdom Show Events Artistic Artistic x 1 (list)

  30. Post #30
    Pixel Heart's Avatar
    July 2009
    4,727 Posts
    Great tutorial Jimmy, but the image distortion makes things look shitty... is there a native pixel res the pictures could be resized to so they don't distort?

  31. Post #31
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    Great tutorial Jimmy, but the image distortion makes things look shitty... is there a native pixel res the pictures could be resized to so they don't distort?
    Haven't looked into it.

  32. Post #32
    Gold Member
    reapaninja's Avatar
    November 2008
    8,118 Posts
    Then in your profile you have 12+ pages of threads.
    hurr I wonder what permabanned user you are

    you're the least intuitive person I've ever seen in a long time

  33. Post #33
    trainman1337's Avatar
    May 2007
    320 Posts
    -LARGE IMAGE-
    Example of a Device Stage for a computer
    What HardwareID/Device did you use to create a Device Stage for the computer itself? (I have the stage set up, but I need to figure out which HardwareID to use to get it to show up.)

  34. Post #34
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    What HardwareID/Device did you use to create a Device Stage for the computer itself? (I have the stage set up, but I need to figure out which HardwareID to use to get it to show up.)
    You actually have to use a special program to do it. It's part of a very large Windows SDK. I'll add a part on how to do it for a computer along with the program you need in a while.

  35. Post #35
    altrus's Avatar
    August 2007
    412 Posts
    Well I'm glad to see you spared more than 2 seconds of thought for us brits [/sarcasm]

    I've followed your tutorial word for word changing everything to en-GB, it did not work. Have any brits got this working?

    Edited:

    Ah, I forgot to restart: restarting.

  36. Post #36
    Gold Member
    Druchii's Avatar
    October 2006
    1,012 Posts
    Well I'm glad to see you spared more than 2 seconds of thought for us brits [/sarcasm]

    I've followed your tutorial word for word changing everything to en-GB, it did not work. Have any brits got this working?

    Edited:

    Ah, I forgot to restart: restarting.
    I got it working using en-US, though i installed in en-GB.
    Shit's weird man.

  37. Post #37
    Gold Member
    lazyV's Avatar
    July 2005
    445 Posts
    NOTE TO MODS: This is WAY TOO BIG for the megathread.
    That was kind of the point of making a subforum. So you don't have to use the megathread.

  38. Post #38
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts
    That was kind of the point of making a subforum. So you don't have to use the megathread.
    Oh cool, thanks.

  39. Post #39
    Gold Member
    Druchii's Avatar
    October 2006
    1,012 Posts
    [img][/img]

    Fuck yeah Jimmy!

    Although, i have issues getting it to work with the Mass Storage Device attached to the phone :(
    Feck, it still shows the default Autorun dialog when i plug it in.
    Yet when i open from Devices and Printers, all is well. (It shows the Device Stage screen)

    What the shit is going on? :iiam:

  40. Post #40
    Gold Member
    Jimmy422's Avatar
    March 2007
    1,737 Posts

    What the shit is going on? :iiam:
    :iiaca:

    You know how with some cars... Nah i'm kidding. Sounds like your WindowsInfo.xml is screwy.