J'ai ajouté quelques actions personnalisées à notre programme d'installation qui est exécuté sur CE5 et WM6. Cet installateur fonctionne bien et se construit très bien. Il y a cependant un ennui. Le fichier setup.dll est déployé sur l'appareil et ce fichier n'est pas nécessaire.Exclure setup.dll du projet Smart Cab dans VS2008
J'ai lu plusieurs sites Web sur la création d'un fichier setup.dll, MSDN et même le SDK mobile. Ils énoncent tous le même ensemble d'étapes.
- Créez votre projet dll C++.
- Assurez-vous que la sortie s'appelle setup.dll.
- Sur votre projet de cabine, cliquez sur DLL d'installation CE, naviguez, dossier d'application, ajoutez la sortie et sélectionnez votre projet d'installation. (Vous ne pouvez pas sélectionner un répertoire local, c'est toujours un répertoire sur la machine cible)
Maintenant cela fonctionne et produit un installateur de cabine personnalisé. Cependant, comme mentionné, le fichier setup.dll est copié dans le dossier de l'application, même s'il n'est pas requis après l'installation (pas même pour la désinstallation)
J'ai essayé d'exclure setup.dll en définissant exclude à true dans ses propriétés . Tout cela ne comprend pas le fichier un tous les fichiers cab pour construire comme setup.dll est manquant.
En tant que tel la seule solution que je suis arrivé à la main change la cabine .inf le fichier de
[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1,Files.Common2,Files.Common3,Files.Common4
CESetupDLL="Setup.dll"
à
[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1,Files.Common2,Files.Common3
CESetupDLL="Setup.dll"
Où Files.Common4 a souligné le fichier setup.dll localement sur la machine. Cette modification signifie qu'elle est utilisée pour générer le fichier CAB, mais le fichier n'est pas copié.
Y a-t-il une façon de faire ce changement dans Visual Studio, ou est-ce que ça va toujours être une édition manuelle du fichier .inf et une compilation manuelle du fichier cab avec cabwiz.exe?
C'est précisément ce que j'essaie d'atteindre. Utilisez setup.dll pour générer le fichier CAB mais ne le copiez pas sur le périphérique. Moi aussi, je ne pensais pas que les actions personnalisées s'exécuteraient sans la DLL. Mais en utilisant la solution de contournement ci-dessus, setup.dll n'est pas installé sur le périphérique (non marqué comme à copier), mais lors de la désinstallation, mes actions personnalisées semblent fonctionner. C'est seulement un petit reproche que je pensais être facile à réparer et j'avais oublié quelque chose d'évident. – JonWillis
L'appareil n'est pas magique. L'action personnalisée ne peut pas se produire sans la présence de la DLL sur le périphérique, car il doit exécuter du code. Maintenant, ce n'est peut-être pas ce que vous pensez, mais cela doit absolument être là. Je suppose que c'est en quelque sorte se retrouver dans le dossier \ Windows - peut-être que vous utilisez une version avec le débogueur.Je vérifierais certainement le CAB sur un appareil complètement propre (c'est-à-dire qui a été réinitialisé). – ctacke
Je me demandais comment il a réussi à exécuter le code de désinstallation sans la DLL, je suis d'accord qu'il doit exécuter du code personnalisé de quelque part ... Je suppose qu'il a été magiquement stocké ailleurs et installer setup.dll dans le dossier de l'application était excédentaire , donné lors de la désinstallation d'un fichier CAB un enregistrement des fichiers installés est conservé quelque part dans le système pour wceload.exe à utiliser sur la désinstallation. Un démarrage en mode minimal du système d'exploitation est la seule façon de tester cela pour être certain de savoir s'il a été mis en cache à partir d'une installation précédente. Je tente de le faire maintenant ... – JonWillis