2010-08-05 35 views

Respuesta

21

Puede utilizar la versión comercial de Dotfuscator para ofuscar automáticamente una aplicación ClickOnce añadiendo el manifiesto de implementación ("aplicación foo") como una entrada a su proyecto Dotfuscator. Dotfuscator le permitirá agregar las exclusiones necesarias a los ensamblados contenidos en la aplicación ClickOnce y creará implementaciones y despliegues de aplicaciones actualizados que contengan los ensamblajes ofuscados.

La versión gratuita de Dotfuscator incluida en Visual Studio (incluido Visual Studio 2010) no tiene la función para ofuscar automáticamente las aplicaciones ClickOnce. Para obtener una aplicación ClickOnce ofuscada que funcione, deberá recrear o actualizar los manifiestos de ClickOnce, ya que la ofuscación cambia las firmas de los ensamblajes.

Puede usar mage.exe o mageui.exe (incluido en Windows/.NET SDK) para actualizar los manifiestos de ClickOnce. Si va a utilizar mage.exe, debe tener en cuenta que no puede usar la opción "Utilizar .deploy file extension" en sus opciones de ClickOnce ya que no lo reconoce.

Asumiendo que su aplicación ClickOnce se denomina "Foo" y es en la versión 1.0.0.0 del proceso tendrá que seguir es:

  1. Publique la aplicación ClickOnce a un directorio en el disco
  2. Run Dotfuscator CE y agregue los ensamblajes que desea ocultar del directorio bin de su proyecto
  3. Ofuscar los ensamblajes. Las asambleas ofuscadas serán puestas en un subdirectorio llamado "Dotfuscated" por defecto.
  4. dimitan sus asambleas ofuscado con sn.exe (sólo si inicialmente fuertes para ellos creó)
  5. Copiar las asambleas ofuscado más alto de los que en el ClickOnce publicar \ Application Files \ Foo_1_0_0_0 directorio
  6. actualización del manifiesto de aplicación y renunciar a ella:

    mage.exe -Actualización "Aplicación Files \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ Foo \ foo.pfx" contraseña -Password

  7. actualización del manifiesto de implementación y renunciarlo:

    mage.exe -Actualización Foo.application -AppManifest "Archivos de aplicaciones \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ Foo \ foo.pfj" contraseña -Password

Ahora tiene una aplicación válida y se manifiestan de despliegue mediante asambleas ofuscado. También puede utilizar la herramienta MageUI.exe para llevar a cabo las mismas tareas (y que sabe cómo manejar conjuntos con el. desplegar extensión) pero no es tan fácil de automatizar.

+0

Hola @Joe, ¿puedes explicar de dónde viene el archivo certificado pfx? – RHaguiuda

+0

@RHaguiuda si envía software a clientes externos, normalmente proviene de un proveedor certificado (Comodo, Thawte, etc.). Para las aplicaciones internas, he usado certs firmados por un controlador de dominio o certificados autofirmados de makecert.exe –

+0

Hola @JoeKuemerle Después de hacer esto, toda mi aplicación dejó de funcionar en la máquina cliente. Se trata de verificar la actualización, descargarla y ejecutarla. luego dejó de funcionar. Revisé el Visor de eventos y encontré 1.0.0.0 4f29010f c d System.NullReferenceException C: \ Users \ Interbiz \ AppData \ Local \ Temp \ WER22D1.tmp.WERInternalMetadata.xml – Bindas

1

Sí, estas son tecnologías compatibles. ClickOnce simplemente se centra en la implementación de una aplicación y sus binarios asociados a una máquina de destino. Dotfuscator descarga los archivos DLL y EXE. Trabajarán juntos mientras ejecute Dotfuscator antes de publicar la aplicación.

+0

Pero, en VS2010, si 'publica' el clickonce, no hay dll/exe. Cómo 'ejecutar Dotfuscator antes de publicar la aplicación'. – Begtostudy

+1

Agregar, 'ejecutar Dotfuscator antes de publicar la aplicación', ¿cómo publicar? – Begtostudy

0

Si está utilizando VS2010, el Dotfuscator que viene con él ofuscará los archivos y luego volverá a firmar los manifiestos por usted. [Editar: esto no es cierto a menos que compre la versión completa; funciona igual que VS2008.]

Si usa VS2008, tendrá que publicar, ofuscar los archivos y luego volver a firmar los manifiestos con Mage o MageUI.

+0

Pero, en VS2010, si 'publica' el clickonce, no hay dll/exe. Cómo 'ejecutar Dotfuscator antes de publicar la aplicación'. – Begtostudy

+0

Consulte las instrucciones anteriores. Gracias a los chicos Preventivos que publicaron la respuesta después de que les pedí información en Twitter. :-) – RobinDotNet

3

tengo una solución similar a Joe Kuemerle de, pero antes de que el proceso de publicación. Esto funciona con publicar en Visual Studio y MSBuild comando línea

Agregue el objetivo BeforePublish al archivo del proyecto.

<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> 

Los archivos de ClickOnce son ClickOnce.application, ClickOnce.exe y ClickOnce.exe.manifest. Mi dotfuscator.xml está en la misma carpeta con el archivo del proyecto. La clave es el último comando, copie los archivos de ClickOnce en la carpeta obj.

+0

Umm, ¿qué parte de lo anterior regenera el manifiesto en función de la cantidad de archivos? Después de todo, puedo tener X archivos antes de la ofuscación, pero solo un archivo después de la ofuscación (sin contar los archivos manifest y .vsto, por supuesto). –

1

No sé si esto es posible sólo en versiones posteriores de Visual Studio, pero para mí funciona perfectamente:

  1. construir el ejecutable en lanzamiento modo
  2. inicio el exe-modificator de su elección y modificar el archivo en obj/liberación/< nombre de archivo .exe > (aviso: no bin/ pero obj/)
  3. Empuje la Publicar Ahora botón de Visual Studio que supone la última construcción se incrementaron al día
  4. Beneficio: D
0

El Ofuscador deepsea trabaja con ClickOnce

0

El Eziriz .NET Reactor tiene una excelente integración ClickOnce.

Cuestiones relacionadas