2016-12-23 1 views
1

J'ai une application cliquable unique qui utilise un logiciel tiers "DevExpress". Les DLL DevExpress représentent 95% de la taille de mon application. Ils ne changent jamais, mais chaque fois que je déploie une mise à jour, je dois les télécharger sur mon serveur FTP, cela prend un certain temps à faire. Existe-t-il un moyen d'avoir un paquet séparé qui est lié à mon application click-once pour les fichiers DevExpress?ClickOnce: Évitez de déployer des fichiers volumineux qui ne changent jamais

Remarque: Du côté client, une seule opération permet de gérer cela efficacement et ne télécharge pas les fichiers qui n'ont pas été modifiés.

Merci

+0

Je suppose que les composants Infragistics, vous pouvez l'installer dans le GAC – McNets

+0

Je préférerais qu'il soit intégré dans le processus clickonce pas besoin d'installer les DLL séparément. Ce processus doit être transparent pour l'utilisateur final, comme le clic-une fois maintenant. – Acanocois

+0

Vous pouvez sélectionner les fichiers inclus dans votre déploiement (voir les propriétés du projet), mais je suppose que si vous n'incluez pas ces fichiers dans votre configuration actuelle, ils seront supprimés la prochaine fois que l'utilisateur exécutera l'application. – McNets

Répondre

0

Vous pouvez localiser les assemblées, ce qui est un peu comme les mettre dans le GAC, seulement ils seront enterrés dans le dossier% USERPROFILE% (avec d'autres assemblées ClickOnce).

Pour ce faire, déclarez-les dans votre fichier App.Config, puis, dans le projet, définissez chacun des assemblages sur "Exclure". Voici un extrait de ce que votre App.Config devra ressembler à:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="DevExpress.BonusSkins.v16.1" culture="neutral" publicKeyToken="B88D1754D700E49A"/> 
     <codeBase version="16.1.4.0" href="http://YourUrl/DevExpress/16.1.4/DevExpress.BonusSkins.v16.1.dll"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="DevExpress.Charts.Designer.v16.1" culture="neutral" publicKeyToken="B88D1754D700E49A"/> 
     <codeBase version="16.1.4.0" href="http://YourUrl/DevExpress/16.1.4/DevExpress.Charts.Designer.v16.1.dll"/> 
     </dependentAssembly> 

La première exécution de clics, une fois le déploiement, il vérifiera si les fichiers sont localisés. Si oui, il les utilisera. Sinon, il les télécharge une fois (et une seule fois).

Avantages:

  • votre clic-fois le déploiement (exe) est vraiment petit
  • Vous pouvez ajouter tous les ensembles Ex Dev impressionnants que vous voulez, comme Skins Bonus, sans se soucier de faire votre déploiement énorme
  • cela fonctionne pour tout signé DLL, non seulement Devexpress
  • tout comme Cliquez-fois, l'utilisateur n'a pas besoin de droits d'administrateur pour le faire (avec la solution GAC, il sera)
  • Mises à jour votre application sera FAST FAST FAST
  • Totalement transparent pour l'utilisateur. Tout se passe en silence sur l'installation initiale

Inconvénients:

  • Vous devez gérer le App.Config lorsque vous mettez à niveau
  • Il est par utilisateur, donc si six utilisateurs se connectent à la même machine, vous copiez six fois les DLL

Ceci fonctionne également avec un chemin UNC - vous n'avez pas besoin d'une référence Web si vos utilisateurs sont tous internes.