Welcome to XDA

Search to go directly to your device's forum

Register an account

Unlock full posting privileges

Ask a question

No registration required
Post Reply

possibility of on-phone xap deployment

OP hjc4869

23rd January 2014, 02:04 AM   |  #1  
OP Member
Flag Wuhan
Thanks Meter: 52
 
52 posts
Join Date:Joined: Jul 2012
Donate to Me
More
ID_CAP_PM_1ST_PARTY
ID_CAP_PM_BSS
ID_CAP_PM_INSTALL
I noiced these three capabilities after wp8 interop unlock and it might be able to install xap by calling PacManClient.dll .
the only problem is that, I am not quite familiar with this dll. Although it might be similar with that in wp7, I didn't develop anything about wp7(I'm quite new here).
maybe we can add these caps and try LoadLibraryEx() to call the dll?
The Following 3 Users Say Thank You to hjc4869 For This Useful Post: [ View ]
23rd January 2014, 12:18 PM   |  #2  
Recognized Developer
Flag Seattle
Thanks Meter: 2,788
 
5,870 posts
Join Date:Joined: Jan 2011
More
I'm sure it's possible. We just need to know the relevant APIs. It may be necessary to reverse engineer the XAP-installation service on the phone to see how it works. Anyhow, yes, this is something I've been wanting to get working as well.
23rd January 2014, 12:20 PM   |  #3  
Recognized Developer
St.Petersburg
Thanks Meter: 2,044
 
1,478 posts
Join Date:Joined: May 2009
Actually, installation of XAPs isn't a problem at all. I wanted to do that, but got a bit bored with rebuilding OS on my engineering AtivS, so I delayed this project.
The Following 3 Users Say Thank You to ultrashot For This Useful Post: [ View ]
23rd January 2014, 12:24 PM   |  #4  
Recognized Developer
Flag Seattle
Thanks Meter: 2,788
 
5,870 posts
Join Date:Joined: Jan 2011
More
Just sharing the function prototypes and usage info would probably be enough for somebody else to do it... doesn't have to be fancy!
The Following 2 Users Say Thank You to GoodDayToDie For This Useful Post: [ View ]
23rd January 2014, 02:45 PM   |  #5  
OP Member
Flag Wuhan
Thanks Meter: 52
 
52 posts
Join Date:Joined: Jul 2012
Donate to Me
More
Quote:
Originally Posted by GoodDayToDie

Just sharing the function prototypes and usage info would probably be enough for somebody else to do it... doesn't have to be fancy!

I think there is a lot of functions that is similar to wp7 ..
23rd January 2014, 08:07 PM   |  #6  
spavlin's Avatar
Senior Member
Thanks Meter: 319
 
189 posts
Join Date:Joined: Dec 2006
http://scug.be/nico/2013/01/31/enrol...nfigmgrintune/

SSP.xap
The Following User Says Thank You to spavlin For This Useful Post: [ View ]
24th January 2014, 12:13 AM   |  #7  
spavlin's Avatar
Senior Member
Thanks Meter: 319
 
189 posts
Join Date:Joined: Dec 2006
pacmanserver.dll :

Code:
I D _ C A P _ P M _ 1 S T _ P A R T Y
   I D _ C A P _ D E B U G _ F O L D E R S
I D _ C A P _ E N T E R P R I S E _ E N R O L L M E N T
     I D _ C A P _ P M _ B S S
   I D _ C A P _ P M _ I N S T A L L
S e c u r i t y V a l i d a t o r < 1 > : : C h e c k P e r m i s s i o n F o r P M D e b u g A P I
S o f t w a r e \ M i c r o s o f t \ P a c k a g e M a n a g e r \ B l a c k l i s t
S o f t w a r e \ M i c r o s o f t \ P a c k a g e M a n a g e r
   F o r c e C h e c k A p p B i n d i n g     I s X A P A u t h o r i z e d   a p p s . g a m e s     N I
     G e t D e c r y p t e d X a p P a t h   0   f a l s e   1   t r u e     { 5 B 0 4 B 7 7 5 - 3 5 6 B - 4 A A 0 - A A F 8 - 6 4 9 1 F F E A 5 6 6 1 }
     S y s t e m \ M a p s   { 5 B 0 4 B 7 7 5 - 3 5 6 B - 4 A A 0 - A A F 8 - 6 4 9 1 F F E A 5 6 8 3 }
     S o f t w a r e \ P a r t n e r \ W a l l e t   O E M D i s a b l e d 
  S o f t w a r e \ M i c r o s o f t \ D e v i c e R e g \ I n s t a l l 
    G e t M a x C o u n t F o r D e p l o y e d A p p   M a x U n s i g n e d A p p     G e t P r o H e a d e r F r o m X a p   W M A p p P R H e a d e r . x m l
   c : \ d a t a \ P R O G R A M S     I n s t a l l   J u n k     T e m p I n s t a l l   X B F   X B F T E M P   T e m p N I     I n s t a l l e r   F l u s h F i l e C o n t e n t s

I D _ H W _ F R O N T C A M E R A
   I D _ C A P _ N E T W O R K I N G
I D _ C A P _ D E V E L O P E R U N L O C K
     I D _ C A P _ D E B U G
     I D _ C A P _ D E B U G _ N A V I G A T I O N
   % W i n D i r % \ S y s t e m 3 2 \ T a s k H o s t . e x e     % W i n D i r % \ S y s t e m 3 2 \ H e a d l e s s H o s t . e x e     % W i n D i r % \ S y s t e m 3 2 \ X b f G e n e r a t o r . e x e     % W i n D i r % \ S y s t e m 3 2 \ M D I L B i n d e r . e x e         C : \ D a t a \ S h a r e d D a t a \ P h o n e T o o l s \ 1 1 . 0 \ D e b u g g e r \ b i n \ R e m o t e D e b u g g e r \ M S V S M O N . e x e     s r c \ b a s e o s \ p r o d \ s e c u r i t y m o d e l \ p r o v i s i o n \ r u n t i m e \ m a r k e t p l a c e a p p l i c a t i o n \ m a r k e t p l a c e a p p l i c a t i o n . c p p       F a i l u r e   a t   l i n e   % i   i n   f i l e   % s ,   E r r C o d e = 0 x % 0 8 x 
     M i c r o s o f t \ S e c u r i t y M a n a g e r \ C a p a b i l i t i e s     A p p l i c a t i o n C a p a b i l i t y S I D     E m b e d d e d W i n d o w s C a p a b i l i t y S I D s   R e q u i r e d C a p a b i l i t i e s     P r i v i l e g e s     T h u m b p r i n t C N G H a s h A l g I d     T h u m b p r i n t     S H A 1 T h u m b p r i n t     E n c o d e d   S i g n e r C e r t i f i c a t e   E n t e r p r i s e I d     I n t e r m e d i a t e C e r t i f i c a t e 
      P R I N C I P A L _ C L A S S _ I S V _ D E V E L O P E R _ U N L O C K
         P R I N C I P A L _ C L A S S _ O E M _ D E V E L O P E R _ U N L O C K     A p p l i c a t i o n B i n a r i e s
   I D _ C A P _ E V E R Y O N E
   I D _ C A P _ B U I L T I N _ D E F A U L T
         M i c r o s o f t \ S e c u r i t y M a n a g e r \ A p p l i c a t i o n s     A p p l i c a t i o n T y p e   A p p l i c a t i o n S i d     D e f A p p s   A p p l i c a t i o n A c c o u n t     R e q u i r e d C a p a b i l i t y S I D s     R e q u i r e d P r i v i l e g e s

C : \ W i n d o w s \ S y s t e m 3 2 \ P a c m a n t h . d l l
I D _ C A P _ I N T E R O P S E R V I C E S
     I D _ C A P _ O E M P U B L I C D I R E C T O R Y
   M a n i f e s t P a r s e r : : P a r s e M a n i f e s t   H a r d w a r e C o n f i g L i b   IsHardwareOnDevice
  I D _ R E Q _ M E M O R Y _ 9 0
The Following User Says Thank You to spavlin For This Useful Post: [ View ]
24th January 2014, 09:02 AM   |  #8  
Junior Member
Flag Hainan Haikou
Thanks Meter: 66
 
15 posts
Join Date:Joined: Feb 2013
This is the COM Object Interface Class
use PacManClient.dll->DllGetClassObject()->NdrDllGetClassObject()->RPCRT4->PacManServer execute.

PMServiceCLSID = {B9E511FC-E364-497A-A121-B7B3612CEDCE}

IPMTilePropertyInfo IPMBackgroundWorkerInfo IPMTileNotification IPMLiveTileJobInfo IPMTilePropertyEnumerator IPMTileInfo IPMTaskInfo IPMExtensionProtocolInfo IPMBnsNotification IPMNotificationsSink IPMLicenseManager IPMTileInfoEnumerator IPMExtensionFileExtensionInfo IPMBackgroundServiceAgentInfoEnumerator IPMExtensionInfo IPMLiveTileJobInfoEnumerator IPMExtensionInfoEnumerator IPMApplicationInfo IPMApplicationInfoEnumerator IPMNotificationManager IPMLifeCycleNotification IPMEnumerationManager IPMBssManager IPMBackgroundServiceAgentInfo IPMTileManager IPMBssWriter IPMInternal IPMBackgroundWorkerInfoEnumerator IPMTaskInfoEnumerator IPMDeploymentManager IPMBssNotificationEnumerator IPMLiveTileJobManager

for LiveTile(form ILSpy)
IPMEnumerationManager = {698D57C2-292D-4CF3-B73C-D95A6922ED9A}
IPMLiveTileJobManager = {15E673FD-0497-4cb3-97CB-99E698DD3B66}
IPMLiveTileJobInfo = {6009A81F-4710-4697-B5F6-2208F6057B8E}
IPMTileInfoEnumerator = {DED83065-E462-4b2c-ACB5-E39CEA61C874}
IPMTileInfo = {D1604833-2B08-4001-82CD-183AD734F752}
IPMTileManager = {D622EEDE-5363-41fc-91C3-88E321191A34}
IPMTilePropInfo = {6C2B8017-1EFA-42a7-86C0-6D4B640BF528}

class IPMEnumerationManagerublic IUnknown
{
public:
virtual void __stdcall _thunk_get_AllApplications();
virtual HRESULT __stdcall get_AllTiles(IPMTileInfoEnumerator** ppTileEnum,DWORD dwFilter);
virtual void __stdcall _thunk_get_AllTasks();
virtual void __stdcall _thunk_get_AllExtensions();
virtual void __stdcall _thunk_get_AllBackgroundServiceAgents();
virtual void __stdcall _thunk_get_AllBackgroundWorkers();
virtual void __stdcall _thunk_get_ApplicationInfo();
virtual HRESULT __stdcall get_TileInfo(const GUID& ProductID,LPWSTR lpszTileID,IPMTileInfo** ppTileInfo);
virtual void __stdcall _thunk_get_AllApplications();
.....................
}

i try use CoCreateInstance to create this class interface, but return error, class not found.
Last edited by hks25258; 24th January 2014 at 09:16 AM.
The Following 2 Users Say Thank You to hks25258 For This Useful Post: [ View ]
24th January 2014, 01:05 PM   |  #9  
Recognized Developer
St.Petersburg
Thanks Meter: 2,044
 
1,478 posts
Join Date:Joined: May 2009
Code:
typedef struct
{
    GUID productID;
    BSTR packagePath;
    GUID instanceID;
    BYTE *licenseData;
    DWORD licenseLength;
    BOOL disableUninstallation;
    BOOL preInstallationFlag;
    GUID offerID;
    BSTR storeAppVersion;
}PM_INSTALLINFO;

typedef struct _tagPM_UPDATEINFO
{
    GUID productID;
    BSTR path;
    GUID instanceID;
    BYTE *licenseData;
    DWORD licenseLength;
    BSTR storeAppVersion;
}PM_UPDATEINFO;

35F785FA-1979-4A8B-BC8F-FD70EB0D1544
class IPMDeploymentManager : public IUnknown
{
    public:
        virtual HRESULT ReportDownloadBegin(GUID productID) = 0;
        virtual HRESULT ReportDownloadProgress(GUID productID, USHORT pogress) = 0;
        virtual HRESULT ReportDownloadComplete(GUID productID, HRESULT hr) = 0;
        virtual HRESULT BeginInstall(PM_INSTALLINFO *installInfo) = 0;
        virtual HRESULT BeginUpdate(PM_UPDATEINFO *updateInfo) = 0;
        virtual HRESULT BeginDeployPackage(PM_INSTALLINFO *installInfo) = 0;
        virtual HRESULT BeginUpdateDeployedPackage(PM_UPDATEINFO *updateInfo) = 0;
        virtual HRESULT BeginUninstall(GUID productID) = 0;
        virtual HRESULT BeginEnterpriseAppInstall(PM_INSTALLINFO *installInfo) = 0;
        virtual HRESULT BeginEnterpriseAppUpdate(PM_UPDATEINFO *updateInfo) = 0;
        virtual HRESULT BeginUpdateLicense(GUID productID, BYTE *licenseData, DWORD licenseLength) = 0;
        virtual HRESULT GetLicenseChallenge(...) = 0;
        virtual HRESULT GetLicenseChallengeByproductID(...) = 0;
        virtual HRESULT GetLicenseChallengeByproductID2(...) = 0;
        virtual HRESULT RevokeLicense(GUID productID) = 0;
        virtual HRESULT RebindMdilBinaries(GUID productID, ...) = 0;
        virtual HRESULT RebindAllMdilBinaries(GUID productID, GUID instanceID) = 0;
        virtual HRESULT RegenerateXbf(GUID productID, ...) = 0;
        virtual HRESULT BeginProvision(GUID productID, ...) = 0;
        virtual HRESULT BeginDeprovision(GUID productID) = 0;
        virtual HRESULT ReindexSQLCEDatabases(GUID productID) = 0;
        virtual HRESULT SetApplicationsNeedMaintenance(...) = 0;
};
where args are omitted - there I just wanted to avoid complexity or dependencies

The Following 5 Users Say Thank You to ultrashot For This Useful Post: [ View ]
Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes