0

J'ai récemment mis à niveau une VS2005 pour une application WinMobile5 vers VS2008. La solution contient également un projet de générateur CAB plus un projet d'installation de bureau MSI. Une DLL personnalisée du programme d'installation prend en charge le déploiement de l'application et des architectures de prise en charge, telles que Compact Framework 2.0, les bibliothèques de scanners, etc.Mobile Compact Framework 2.0 Installation échouée à partir de Win7 généré à partir de VS2008

J'ai utilisé cet article comme guide pour l'installation MSI:
http://msdn.microsoft.com/en-us/library/aa446504.aspx

Le problème est, l'ACR CF2 ne sera pas installé à un périphérique WM5 de Win7 lors de l'exécution du fichier Setup.exe/MSI. Cependant, l'installation de XP fonctionne bien.

Résumé:

-Windows7 machine 32 bits - VS2008/SDK WM6 (inclut le support WM5)
-Symbole WM5 Device - MC70
-Windows Mobile Device Centre
-Création de bureau MSI pour installer CF2 CAB En plus de l'application CAB par l'intermédiaire de la DLL personnalisée
-Lors de l'installation (exécution en tant qu'administrateur) de l'installation de mon application, la CF2 CAB indique que "l'installation a échoué"
-Quand exécuter/déboguer l'application de VS2008 déploiera correctement CF2, ça PEUT fonctionner.

friandise Intéressant:
Je reculai funky CF2 CAB de l'appareil à comparer avec la source, SITUÉ ici:

C: \ Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE À ma grande surprise, le périphérique CAB avait deux octets HEX différents de la source. Du début:

4D 53 43 46 00 00 00 00 68 48 reste (de Pullback) est le même
4D 53 43 46 00 00 00 00 (de source) reste est identique

Lorsque je remplace le CAB "68 48" avec le CAB "50 22" et que je le lance manuellement sur l'appareil, il s'installe bien. Ma question est la suivante: pourquoi la source cab est-elle légèrement modifiée une fois qu'elle atteint le destinataire? A part ça, les fichiers sont identiques.

D'autres choses que j'ai essayé:
Créer une petite application ciblant WM5/CF2. Ajout d'un projet CAB, ajout d'une configuration & Déployer un projet. Exécutez le programme d'installation à partir de XP, génial! Exécutez le programme d'installation à partir de Win7, BOOM!

/La racine de l'appareil ne contient pas de journal d'installation CF2. Ne va pas aussi loin.
VOLATILE/Setup.log ne contient aucune "erreur".

J'ai également essayé l'approche UberCab (regroupement de plusieurs CAB en un seul CAB). Cependant, en cas de dégroupage sur l'appareil: BOOM échoue. Ça sait en quelque sorte.

Je suis à bout de nerfs. La pièce CF2 devrait juste fonctionner.

-Tom

Répondre

0

En regardant en arrière à mon code source pour le SDK d'installation CAB, je vois que le début de l'ACR est une tête de taille fixe. Le premier DWORD est une signature CAB (0x4643534d little-endian) comme vous le voyez. Le deuxième DWORD est un ensemble réservé, qui dans votre cas est tous des zéros. La prochaine DWORD est la taille de la CAB - vous montrez seulement le mot le plus bas, mais la différence est près de 10k (0x4868 - 0x2250 = 0x2618). Cela provoque probablement l'échec du décompresseur CAB car il recherche des données après la fin du fichier.

Maintenant pourquoi cela change je ne sais pas. Vous avez vérifié la source du CAB dans le MSI? Avez-vous ouvert le MSI dans un autre outil et sorti le CAB pour voir si c'est juste là? Fondamentalement, l'ACR est-elle erronée du côté de la source (très probablement je pense), ou est-ce qu'elle est modifiée lorsqu'elle est déplacée?

+0

ctacke - Comme vous l'avez suggéré, j'ai tiré la cabine CF2 de MSI en utilisant 7-zip. BeyondCompare dit identique à la source. Pourtant, sur l'appareil, il est modifié comme je l'ai décrit dans mon message. À ce stade, je suspecte ma boîte. Va tester les installations sur d'autres machines. Merci de votre aide. - Tom –

+0

Suivi - Entré à travers une friandise à http://www.christec.co.nz/blog/archives/61. Près du bas, il est écrit "Les fichiers CAB transférés via ActiveSync peuvent être modifiés pendant le processus de transfert". Les points vers un message MSDN qui indiquent les CAB signés paraissent plus petits, donc ils ne les signalent pas en modifiant le 3ème DWORD pour indiquer la taille réelle. –

Questions connexes