La mejor manera de implementar una aplicación de Visual Studio que se puede ejecutar sin instalar

80

Escribí una aplicación bastante simple con C # / .NET y no puedo encontrar una buena manera de publicarla. Es una especie de "herramienta" que los usuarios solo ejecutarían una vez o cada pocos meses. Debido a esto, espero que haya una manera de implementarlo donde no sea necesario instalarlo para ejecutarse (podría ejecutarse haciendo doble clic en un archivo EXE inmediatamente después de la descarga).

Sin embargo, todavía necesita (de alguna manera) incluir la versión correcta de .NET, bibliotecas, etc. para que funcione correctamente. Sé que esto se incluye al usar ClickOnce, pero eso aún instala la aplicación en la computadora del usuario.

¿Hay alguna manera de hacer esto?

EDITAR - \ bin \ Debug

myAppName.application
myAppName.exe
myAppName.exe.config
myAppName.exe.manifest
myAppName.pdb
myAppName.vshost.application
myAppName.vshost.exe
myAppName.vshost.exe.config
myAppName.vshost.exe.manifest
extraLibrary.dll

así como dos carpetas

app.publish
Resources
Wilson
fuente

Respuestas:

106

Es posible y engañosamente fácil:

  1. "Publique" la aplicación (en, digamos, alguna carpeta en la unidad C), ya sea desde el menú Generar o desde las propiedades del proyecto → Publicar . Esto creará un instalador para ClickOnce aplicación .
  2. Pero en lugar de utilizar el instalador producido , busque los archivos producidos (el archivo EXE y los archivos .config , .manifest y .application , junto con los archivos DLL, etc.); todos están en la misma carpeta y, por lo general, en el bin\Debugcarpeta debajo del archivo del proyecto ( .csproj ).
  3. Comprima esa carpeta ( omita los archivos * .vhost. * Y la app.publishcarpeta (no son necesarios) y los archivos .pdb a menos que prevea la depuración directamente en el sistema de su usuario (por ejemplo, por control remoto)), y proporciónelo a los usuarios.

Una ventaja adicional es que, como aplicación ClickOnce, no requiere privilegios administrativos para ejecutarse (si su aplicación sigue las pautas normales sobre qué carpetas usar para los datos de la aplicación, etc.).

En cuanto a .NET, puede verificar la versión mínima requerida de .NET que se está instalando (o nada) en la aplicación (la mayoría de los usuarios ya la tendrán instalada) y presentar un cuadro de diálogo con un enlace a la página de descarga en el sitio web de Microsoft. (o apunte a una de sus páginas que podría redirigir a la página de Microsoft; esto la hace más sólida si cambia la URL de Microsoft). Como es una pequeña utilidad, podría apuntar a .NET 2.0 para reducir la probabilidad de que un usuario tenga que instalar .NET.

Funciona. Usamos este método durante el desarrollo y la prueba para evitar tener que desinstalar e instalar constantemente la aplicación y aún estar bastante cerca de cómo se ejecutará la aplicación final.

Peter Mortensen
fuente
2
Gracias, funciona como un encanto! Tuve que usar el botón 'Archivos de aplicación ...' de las propiedades de publicación de mi proyecto para forzar la inclusión de todas las DLL a las que se hace referencia, ya que todas las referencias no están incluidas de forma predeterminada.
JulienVan
43
Por curiosidad, ¿en qué se diferencia esto de copiar los archivos directamente desde \ bin \ Release?
Eric Eskildsen
10
También me gustaría saber en qué se diferencia esto de copiar los archivos directamente desde \ bin \ Release.
CoDeGiRl
1
realmente gran respuesta, copié todos los archivos enumerados Application Filesen la pestaña de publicación y .application, .manifest, .config, .exe and other dlls.. gracias señor por el segundo punto en su respuesta :) ..
Mohammed Sufian
3
Esto no es diferente de simplemente construir el proyecto y obtener los archivos de la carpeta bin (Debug o Release). Ejecutar el asistente de publicación para crear un instalador no utilizado solo hace que el proyecto se compile de nuevo, al igual que hacer clic en "Generar". Una respuesta más corta sería simplemente asegurarse de que el proyecto se compile, luego vaya a la carpeta bin del proyecto y copie los archivos (o comprímalos para copiarlos fácilmente) en la ubicación desde la que desea ejecutar el programa. Aún debe asegurarse de que la versión .Net correcta esté instalada en la máquina del usuario. Solo tiene que coincidir con la versión en la que está integrada la aplicación.
Jeff Blenman
2

Primero debe publicar el archivo mediante:

  1. CONSTRUIR -> PUBLICAR o haciendo clic derecho en el proyecto en el Explorador de soluciones -> propiedades -> publicar o seleccionar el proyecto en el Explorador de soluciones y presione Alt+ Enter NOTA: si está utilizando Visual Studio 2013 , en las propiedades tiene que ir a CONSTRUIR y luego tiene que deshabilite definir la constante DEBUG y defina la constante TRACE y estará listo para comenzar. Representación

  2. Guarde su archivo en una carpeta en particular. Busque los archivos producidos (el archivo EXE y los archivos .config, .manifest y .application, junto con los archivos DLL, etc.); todos están en la misma carpeta y, por lo general, en la bin\Debugcarpeta debajo del archivo del proyecto (.csproj ). En Visual Studio, están en la carpeta Archivos de la aplicación y dentro de ella solo necesita los archivos .exe y dll. (Debe eliminar ClickOnce y otros archivos y luego convertir esta carpeta en un archivo zip y distribuirlo).

NOTA: La aplicación ClickOnce instala el proyecto en el sistema, pero tiene una ventaja. Aquí NO necesita privilegios administrativos para ejecutarse (si su aplicación sigue las pautas normales sobre qué carpetas utilizar para los datos de la aplicación, etc.).

abe312
fuente
2
¿Por qué necesita establecer DEBUG y TRACE en valores particulares?
Peter Mortensen
Puede activar el atributo condicional Trace o Debug para una compilación, o ambos, o ninguno. Por lo tanto, hay cuatro tipos de compilación: depuración, seguimiento, ambos o ninguno. Algunas compilaciones de lanzamiento para implementación de producción pueden no contener ninguno; la mayoría de las compilaciones de depuración contienen ambos. .................................................. ................................. msdn.microsoft.com/en-us/library/aa983575(v=vs .71) .aspx ............................................. .................................................. ..... msdn.microsoft.com/en-IN/library/ms164714.aspx
abe312
1
Siempre se brindará ayuda en stackoverflow a quienes la soliciten;) dime ¿qué parte no entendiste? De hecho, hice una aplicación funcional a través de mi método después de investigar un poco. Estaba usando Visual Studio 2013
abe312
1
No veo nada llamado "Publicar" en VS2015
UuDdLrLrSs
1
Tanto Visual Studio 2008 como Visual Studio 2017 tienen la opción "Publicar <nombre del proyecto>" en el menú "Generar" (¿quizás se omitió en Studio 2015?). En cualquier caso, también se puede hacer desde las propiedades del proyecto, "Publicar" → "Publicar ahora" (como en la captura de pantalla aquí).
Peter Mortensen