2010-09-08 5 views
0

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.

  1. Créez votre projet dll C++.
  2. Assurez-vous que la sortie s'appelle setup.dll.
  3. 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?

Répondre

1

Je suis un peu confus. Vous avez créé une extension d'installation setup.dll et l'avez incluse dans le CAB, mais vous ne le voulez pas sur l'appareil? Pour que vos actions personnalisées s'exécutent pendant l'extraction CAB, la DLL doit être dans le CAB et extraite sur le périphérique.

Si vous ne le souhaitez pas sur l'appareil, il suffit de l'omettre dans CopyFiles et de supprimer l'entrée CESetupDLL de l'INF. De toute évidence, cela signifie que toutes les actions personnalisées définies ne peuvent pas être exécutées. Pour être clair, cette DLL que vous référencez est pour les actions personnalisées sur l'appareil lors de l'installation et/ou de la désinstallation. Il ne fournira aucune fonctionnalité de bureau.

+0

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

+0

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

+0

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

Questions connexes