2010-02-01 2 views
9

J'ai créé une application WPF et masqué le fichier .exe principal avec un outil externe.Est-il possible d'obscurcir une application ClickOnce créée dans Visual Studio 2008?

Maintenant, j'ai du mal à le publier en tant qu'application ClickOnce, car Visual Studio recompile à nouveau l'exécutable principal.

Je désactivé les cases de construction sous Solution → Configuration Manager, mais il ne fonctionne pas: l'exécutable continue à être reconstruit lorsque je publie l'application à http://localhost/MyApplication

Est-il possible de déployer mon application ClickOnce sans recompilation le projet actuel?

Si ce n'est pas possible, existe-t-il un outil gratuit pour générer une application ClickOnce avec des fichiers spécifiques souhaités?

+0

Jetez un oeil à http://stackoverflow.com/questions/3416223/how-to-use-obfuscation-for-clickonce/12036582#12036582 (possible en double?) – Matmarbon

Répondre

7

Disclaimer: Je travaille pour PreEmptive Solutions, les fabricants de Dotfuscator. Le problème avec la solution de Jared est qu'une tâche de post-construction s'exécute trop tard dans le processus de construction car les étapes de construction ClickOnce créent les manifestes (y compris les signatures d'assemblage, qui changent d'obfuscation) bien avant le déclenchement. Vous pouvez hacker le fichier MSBuild (votre fichier .csproj/.vbproj) pour appeler la tâche d'obfuscation dans l'étape AfterCompile et demander à l'obfuscator de vider les assemblages obfusqués dans le répertoire bin de builds, mais cela est pénible.

Une solution alternative consiste à utiliser les outils Mage/MageUI pour recréer l'ClickOnce manifeste en publiant votre application, obscurcissant les assemblées, les assemblées publiées écraser avec les versions brouillées, puis en exécutant Mage de recréer les manifestes comme le montre here. La documentation de l'utilitaire Mage est here.

Une troisième alternative est si votre obfuscator est Dotfuscator Professional version d'édition 4.6.1010 ou supérieur. Dotfuscator a la capacité de lire directement un manifeste de déploiement ClickOnce en tant qu'entrée, de masquer les assemblys et de sortir à la fois les assemblages obfusqués et les fichiers manifestes entièrement mis à jour. Voir here pour un point de départ.

1

Je ne comprends pas exactement pourquoi ClickOnce a ce comportement apparent. Cependant, vous devriez être capable de contourner ce problème en insérant l'étape d'obscurcissement dans le système de construction. Essayez de définir une tâche de génération de post qui exécute l'obfuscator par rapport à l'EXE/DLL. Puisque cela fonctionnera dans le cadre de la construction, ClickOnce ramassera la reconstruction DLL obfuscated ou non.

Il vous délivrerai la peine de l'exécuter manuellement :)

2

Juste Pour votre information, cela est géré dans Visual Studio 2010.

En attendant, vous devez publier dans un dossier, les ensembles obscurcir et resigner le déploiement utilisant Mage ou MageUI. C'est parce que ClickOnce hache les assemblages, et quand vous les obscurcissez, il change les hachages, et ils ne correspondent plus aux informations dans le manifeste.

RobinDotNet

0

Mon entreprise écrit un logiciel appelé ClickOnceMore qui est idéal pour ce scénario. ClickOnceMore est un outil ClickOnce qui peut être utilisé pour automatiser ClickOnce dans le cadre d'un processus de construction volumineux.À l'aide des règles d'inclusion de fichier, vous pouvez inclure vos assemblages obfusqués dans le projet ClickOnceMore, puis générer les manifestes ClickOnce à l'aide de l'outil de ligne de commande ClickOnceMore.

Beaucoup de nos clients utilisent ClickOnceMore pour construire ClickOnce se manifeste par des assemblées obfusqués. Vous pouvez trouver le logiciel au www.clickoncemore.net.