2010-08-05 3 views

Répondre

21

Vous pouvez utiliser la version commerciale de Dotfuscator pour masquer automatiquement une application ClickOnce en ajoutant le manifeste de déploiement ("foo.application") en tant qu'entrée à votre projet Dotfuscator. Dotfuscator vous permettra d'ajouter les exclusions nécessaires aux assemblages contenus dans l'application ClickOnce et créera des manifestes de déploiement et d'application mis à jour contenant les assemblages obfusqués.

La version gratuite de Dotfuscator incluse dans Visual Studio (y compris Visual Studio 2010) ne dispose pas de la fonctionnalité permettant d'obfuser automatiquement les applications ClickOnce. Afin d'obtenir une application ClickOnce obfusquée fonctionnelle, vous devrez recréer ou mettre à jour les manifestes ClickOnce, car l'obfuscation modifie les signatures des assemblages.

Vous pouvez utiliser mage.exe ou mageui.exe (inclus dans le Kit de développement Windows/.NET) pour mettre à jour les manifestes ClickOnce. Si vous allez utiliser mage.exe, sachez que vous ne pouvez pas utiliser l'option "Utiliser l'extension de fichier .deploy" dans vos options ClickOnce car elle ne le reconnaît pas.

En supposant que votre application ClickOnce est nommé "Foo" et est à la version 1.0.0.0 du processus que vous voulez suivre est:

  1. Publiez votre application ClickOnce dans un répertoire sur le disque
  2. Run Dotfuscator CE et ajoutez les assemblages que vous souhaitez masquer dans le répertoire bin de votre projet.
  3. Obscurcissez les assemblages. Les assemblages obfusqués seront placés dans un sous-répertoire nommé "Dotfuscated" par défaut.
  4. Abandonner vos assemblées brouillées avec sn.exe (uniquement si vous avez initialement forte les named)
  5. Copiez les ensembles brouillées au-dessus de ceux de la ClickOnce publier \ Application Files \ Foo_1_0_0_0 répertoire
  6. Mise à jour le manifeste d'application et sa démission il:

    Mage.exe -Update "application Files \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ Foo \ foo.pfx" password -Password

  7. mise à jour du manifeste de déploiement et le démissionner:

    Mage.exe -Update Foo.application -AppManifest "Fichiers d'application \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ Foo \ foo

    PFX » Mot de passe -Password

Vous avez maintenant un manifeste de l'application en cours de validité et le déploiement en utilisant des assemblages brouillées. Vous pouvez également utiliser l'outil MageUI.exe pour accomplir les mêmes tâches (et il sait comment gérer les assemblages avec le. déployer l'extension), mais il est pas aussi facile à automatiser.

+0

Salut @Joe, pouvez-vous expliquer d'où vient le fichier de certificat pfx? – RHaguiuda

+0

@RHaguiuda Si vous expédiez des logiciels à des clients externes, ils proviennent généralement d'un fournisseur de certificats (Comodo, Thawte, etc.). Pour les applications internes, j'ai utilisé des certificats signés par un contrôleur de domaine ou simplement des certificats auto-signés de makecert.exe –

+0

Bonjour @JoeKuemerle Après avoir fait cela, toutes mes applications ont cessé de fonctionner sur la machine client. Il vérifie la mise à jour, le télécharge et l'exécute. puis cessé de travailler. J'ai vérifié l'Observateur d'événements et trouvé 1.0.0.0 4f29010f c d System.NullReferenceException C: \ Users \ Interbiz \ AppData \ Local \ Temp \ WER22D1.tmp.WERInternalMetadata.xml – Bindas

1

Oui, ce sont des technologies compatibles. ClickOnce se concentre simplement sur le déploiement d'une application et de ses binaires associés sur une machine cible. Dotfuscator empile les fichiers DLL et EXE. Ils fonctionneront ensemble tant que vous exécuterez Dotfuscator avant de publier l'application.

+0

Mais, dans VS2010, si vous 'publiez' le clickonce, il n'y a pas dll/exe. Comment 'exécuter Dotfuscator avant de publier l'application'. – Begtostudy

+1

Ajouter, 'exécuter Dotfuscator avant de publier l'application', comment publier? – Begtostudy

0

Si vous utilisez le VS2010, le Dotfuscator qui l'accompagne brouille les fichiers, puis signe les manifestes à votre place. [Modifier - ce n'est pas vrai sauf si vous achetez la version complète; cela fonctionne exactement comme VS2008.]

Si vous utilisez VS2008, vous devrez publier, puis masquer les fichiers, puis re-signer les manifestes avec Mage ou MageUI.

+0

Mais, dans VS2010, si vous 'publiez' le clickonce, il n'y a pas dll/exe. Comment 'exécuter Dotfuscator avant de publier l'application'. – Begtostudy

+0

Voir les instructions ci-dessus. Merci aux gars de Preemptive qui ont posté la réponse après leur avoir demandé des infos sur Twitter. :-) – RobinDotNet

3

J'ai une solution similaire à Joe Kuemerle de, mais avant la publication processus. Cela fonctionne avec la publication dans Visual Studio et MSBuild commande ligne

Ajoutez la cible BeforePublish au fichier projet.

<ItemGroup> 
    <ClickOnceFiles Include="bin\Release\ClickOnce.*"/> 
</ItemGroup> 
<Target Name="BeforePublish"> 
    <Exec Command="{path to dotfuscator}\dotfuscator.exe Dotfuscator.xml" /> 
    <Exec Command="mage.exe -u bin\Release\ClickOnce.exe.manifest" /> 
    <Exec Command="mage.exe -u bin\Release\ClickOnce.application -AppManifest bin\Release\ClickOnce.exe.manifest" /> 
    <Copy SourceFiles="@(ClickOnceFiles)" DestinationFolder="obj\Release" OverwriteReadOnlyFiles="True" /> 
</Target> 

Les fichiers ClickOnce sont ClickOnce.application, ClickOnce.exe et ClickOnce.exe.manifest. Mon dotfuscator.xml se trouve dans le même dossier que le fichier de projet. La clé est la dernière commande, copiez les fichiers ClickOnce dans le dossier obj.

+0

Umm, quelle partie de ce qui précède régénère le manifeste en fonction du nombre de fichiers? Après tout, je peux avoir des fichiers X avant l'obfuscation mais seulement un fichier après obfuscation (sans compter les fichiers manifestes & .vsto, bien sûr). –

1

Je ne sais pas si cela est seulement possible dans les versions ultérieures de Visual Studio, mais pour moi il fonctionne parfaitement:

  1. Construire l'exécutable dans le mode de sortie
  2. Démarrez l'exe-de modificateur votre choix et modifier le fichier à obj/Release/< nom de fichier .exe > (avis: non bin/ mais obj/)
  3. Poussez le Publish Now bouton de Visual Studio qui prend la dernière construction ont été mis à jour
  4. Bénéfice: D
0

Le obfuscateur hauturier travaille avec clickonce

0

Le Reactor Eziriz .NET a une excellente intégration ClickOnce.