2011-06-17 9 views
5

Estoy trabajando en un proyecto que tiene un formato de archivo propietario. El proyecto tiene un gran programa de instalación necesaria y un visor más pequeño que no requiere instalación. Me gustaría poder exportar archivos desde mi aplicación principal que son de apertura automática. Es decir, puede hacer doble clic en el archivo ejecutable y se mostrará el archivo incrustado (esto es para hacer pasar al espectador a las personas que tienen NO se instaló la aplicación principal capaz de verlo, solo pasarán alrededor del documento).Creación de documentos de apertura automática

Estoy un poco perdido en cómo hacer esto. Mis dos pensamientos que he estado investigando han llegado a un callejón sin salida. Ellos son:

1) Incruste el archivo en el visor. Puedo hacerlo manualmente a través de Visual Studio, y tengo una demostración funcional de eso, pero no puedo encontrar una manera de hacerlo sobre la marcha.

2) Cree un archivo autoextraíble que extraiga el archivo y el exe a temp y ejecute el archivo ejecutable con el nombre del archivo en la línea de comandos. Esto suena fácil y posible (aunque hacky), pero me he encontrado con el problema de que los archivos o los programas de instalación no parecen tener la línea de comandos necesaria para hacer todo eso.

¿Alguna idea? Prefiero el segundo porque es fácil, pero el primero porque parece más a prueba de balas/menos hacky.

+2

Entonces, si envía 10 documentos, ¿envía 10 copias del visor? ¿No es peor que enviar al espectador una vez y luego simplemente enviar documentos y usar la asociación de archivos para abrirlos? – AntonyW

+1

¿No sería mejor que pusieras tus esfuerzos en exportar a HTML, PDF u otro formato de archivo común que todos puedan leer y todo? ¿O eso simplemente no? –

+2

@AntonyW: los documentos son cientos de megabytes, el visor tiene menos de 500 KB. Un oficio que estoy dispuesto a hacer :) – DanTheMan

Respuesta

1

Si bien agrupar el archivo ejecutable en el documento para convertirlo en un documento de apertura automática es una buena idea, no creo que sea la mejor solución al problema. El problema es que los documentos requieren un visor específico que no está disponible. Así que haz que el espectador sea tan fácil de obtener como sea posible.

Y eso es lo que Xint0 sugirió en los comentarios. Encuentre una manera de hacer que el espectador esté lo más disponible posible. No hay necesidad de preocuparse por la piratería, ya que solo es un visor para un formato de propiedad exclusiva, por lo que las únicas personas interesadas en ella serán las personas que ya tengan un documento que no puedan abrir. Así que publique el visor en el sitio web de su empresa y anime a las empresas que utilizan el software completo a publicar enlaces al espectador en sus sitios web para que sus clientes puedan encontrarlo fácilmente.

+0

Ok, Corin, obtienes la opción 'Voy a abandonar este esfuerzo'. Esperaba algo fácil y resuelto, pero simplemente no parece que eso exista. No creo que hacer esto sea una mala idea o un agujero de seguridad (demasiado severo), pero no estoy dispuesto a pensar en algo que nadie más haya intentado antes. ¡Oh bien! – DanTheMan

+0

Gracias. Como dije, creo que el documento de apertura automática es una buena idea. De alguna manera, me gustaría ver una implementación de eso solo porque es genial. Sin embargo, sigo pensando que distribuir el visor es el problema que realmente necesita resolver. – Corin

3

Usando su método (1):

Si está utilizando .NET, usted podría hacer su programa de visualización sea un montaje, y su documento de ser otro montaje, a continuación, utilizar ILMerge o similar para combinarlas en una sola ejecutable final

ILMerge es un programa de línea de comandos, por lo que debería ser capaz de automatizar ese paso.

De esta manera, debería ser bastante fácil tener su visor personalizado esencialmente solo "cargue el otro ensamblaje que está conmigo" y tal vez llame a una función en el otro ensamblaje para obtener los datos.

La única otra pieza del rompecabezas es cómo generar el ensamblaje 'documento'. No estoy del todo seguro de los pasos, pero parece que debería ser factible.

Quizás use CMake o similar para generar un proyecto VStudio, y luego use MSBuild para compilarlo en un ensamblado.

Cuestiones relacionadas