2009-09-29 15 views
8

¿Hay alguna herramienta de código libre/abierto que pueda usarse para crear un instalador avanzado de MSI?Free MSI Authoring tools

Encontré el following list de las herramientas de autoría de MSI, sin embargo, sé muy poco acerca de la tecnología MSI y es difícil distinguir de esa lista cuáles de esas herramientas se pueden usar para crear nuevos instaladores MSI desde cero (en lugar de simplemente viendo o editando instaladores existentes)

Respuesta

13

Prefiero usar WiX para crear el instalador MSI. Tal vez no sea la forma más fácil de generar un MSI (porque está basado en XML), pero es gratuito y encontrarás muchos guiones de plantillas en Internet. Una herramienta de base de script como WiX no necesita ser una desventaja, es perfecta para compilaciones automatizadas.

También, por lo que sé, Visual Studio 2010 debería ser compatible con WiX de fábrica.

+0

Sí, hay una curva de aprendizaje, y puede ser frustrante, pero vale la pena. VS2010 no incluirá WiX (http://robmensching.com/blog/posts/2009/4/1/Visual-Studio-will-not-ship-the-WiX-toolset-contributes-only), que es un vergüenza. Pero, por supuesto, todavía es compatible con wixproj. – si618

+0

msitools tiene una herramienta simple similar a wix. https://live.gnome.org/msitools – elmarco

+0

WiX también hace un buen trabajo al hacer referencias cruzadas específicas de los elementos apropiados en la documentación de MSI en su propia documentación (referencia de esquema wix), esto ayuda a aclarar los significados en ambos mundos. – Wolf

1

I como Me gustaMakeMSI. (Hoy en día prefiero WiX, que es un poco más fácil de manejar una vez que lo averigua, tiene una mejor salida y tampoco depende de Visual Studio.)

Responda la respuesta original.


MAKEMSI el mundo tiene una curva de aprendizaje empinada, sensación general de MAKEMSI no es muy profesional, pero resultó para dar buenos resultados, además de que no parece depender de Visual Studio para nada.


He aquí un ejemplo de la que acaba de construir un .msi (modificado para eliminar la marca):

gamename.mm:

#define? UISAMPLE_DIALOG_FILE_dlgbmp  LeftSide.bmp ;;My replacement graphic for the left hand side (vertical) bitmap 
#define? UISAMPLE_LEFTSIDE_TEXT        ;;Disable "left side text" 
#define? UISAMPLE_BITMAP_WHITE_BANNER PrettyBanner.bmp  ;;Use "white.bmp" if you just want it plain 
#define? UISAMPLE_BITMAP_BANNER_GRAPHIC gamename.bmp   ;;The graphic on the right of the "UISAMPLE_BITMAP_WHITE_BANNER" 
#define? COMPANY_PRODUCT_ICON   ..\gamename.ico   ;;Add-Remove (control panel) icon 
#define? COMPANY_NAME     Company Name 
#define? DEPT_ARP_URL_PUBLISHER   http://www.example.com/ 
#define? DEPT_ARP_URL_TECHNICAL_SUPPORT http://www.example.com/support 
#define? DEPT_NAME      Company Name 
#define? DEPT_ADDRESS     [email protected] 
#define? COMPANY_CONTACT_NAME   <$DEPT_NAME> 
#define? COMPANY_CONTACT_NAME_PHONE    ;;No phone 
#define? COMPANY_SUMMARY_SCHEMA   110  ;;Minimum v1.1 Installer 
#define? COMPANY_SUMMARY_AUTHOR   <$DEPT_NAME> 

#define? UISAMPLE_LEFTSIDE_TEXT_FONT_COLOR   &HFFFFFF ;;White in BGR (believe it or not...) 
#define? DBG_ALL         N   ;;Do not Add MAKEMSI debugging to "console file" 


;--- Include MAKEMSI support (with customisations and MSI branding) ------ 
#define VER_FILENAME.VER gamename.ver  ;;ver filename 
#include "ME.MMH" 

; #define MSI_SUMMARY_MSI_NAME_TITLE Blah 

;--- Want to debug (not common) --------------------------------------------- 
;#debug on 
;#Option DebugLevel=^NONE, +OpSys^ 


;--- add files -------- 
#define SourceRootDir ..\bin\win32_dist 

; <$MAKEMSI_MM_BASENAME>: filename of this mm, e.g. "gamename.mm" 
<$DirectoryTree Key="INSTALLDIR" Dir="c:\program files\Game Name" CHANGE="\" PrimaryFolder="Game Name"> 

<$Files "<$SourceRootDir>\*.*" DestDir="[INSTALLDIR]\" SubDir="TREE"> 
<$Files "<$SourceRootDir>\data\*.*" DestDir="[INSTALLDIR]\data" SubDir="TREE"> 
<$Files "<$SourceRootDir>\Microsoft.VC90.CRT\*.*" DestDir="[INSTALLDIR]\Microsoft.VC90.CRT" SubDir="TREE"> 


<$DirectoryTree Key="MY_SHORTCUT_FOLDER" Dir="[ProgramMenuFolder]\Game Name" MAKE="Y" REMOVE="Y"> 
<$Shortcut Dir="MY_SHORTCUT_FOLDER" Target="[INSTALLDIR]\gamename.exe" Title="Game Name" Description=^Launch Game Name^ Arguments=^""^ WorkDir="INSTALLDIR" > 

gamename.ver:

; ProductName = Game Name 
; DESCRIPTION = Game Name 
; Licence  = gamename.rtf 
; Installed = WINDOWS_ALL 
; Guid.UpgradeCode = {DEADBEEF-DEAD-BEEF-DEAD-BEEFDEADBEEF} ; <=== GENERATE THIS 
; MsiName  = gamename 

; repeat this as a changelog 
;############################################################################ 
VERSION : 1.2.2 
DATE : 11 May 2011 
CHANGES : Initial build. 
     : 

También necesita t o Alimentación:

  • LeftSide.bmp - 503x314 (vacío excepto por la izquierda 160x314)
  • PrettyBanner.bmp - 500x60
  • gamename.bmp - 48x48

archivos a distribuir se especifican con, por ejemplo:

<$Files "<$SourceRootDir>\*.*" DestDir="[INSTALLDIR]\" SubDir="TREE"> 

Construya el MSI haciendo clic derecho en .mm y eligiendo el elemento correcto.

+0

Comparto tus críticas sobre MakeMsi, pero desde mi POV (versión 16. *) no depende de VisualStudio. Tal vez eso ha cambiado con el tiempo? – Wolf

+0

Eso es exactamente lo que dije. De cualquier manera, recomiendo encarecidamente WiX que es, afaik, autónomo también. –

+0

Bueno, obviamente malentendí tu * 'también' * en la cláusula. Una desventaja importante de MakeMsi es su gran barrera de soporte a la comunidad: tienes que unirte a este viejo grupo de Yahoo :(... ¿también dirías que WiX es más rápido? (Tuve esta impresión) – Wolf

0

Es posible que desee echar un vistazo a las herramientas de MSI: https://live.gnome.org/msitools, puede construir MSI con herramientas de bajo nivel y API, o utilizar una herramienta WiX más sofisticada llamada wixl. Todo el código es abierto y amigable para compiladores cruzados (glib/libgsf, no .net, etc.). Se basa en la implementación de Wine MSI.

Para la firma, osslsigncode admite MSI desde la versión 1.5.

+0

Justin: La última vez que los utilicé. no hay una razón técnica para eso, solo falta una atmósfera de interés. No hay razón por la que no funcione. – elmarco

0

Uso Wix Edit que es una manera fácil y sencilla de crear el archivo XML utilizado para construir una MSI. No obstante tuve que editar el XML manualmente después, para agregar una '\' inicial a cada ruta de archivo. Además, Wix Edit hace un mal trabajo al establecer WorkingDirectory para los atajos, por lo que también debe cambiarlo manualmente.

3

Advanced Installer tiene una edición que es gratis para siempre. Le permite crear Simple projects, como en el tutorial vinculado.

El mismo tipo de proyecto también se puede integrar con el Visual Studio extension, que también es gratuito.

La ventaja es que el Instalador avanzado proporciona una interfaz gráfica de usuario de alto nivel y fácil de usar para compilar y personalizar el instalador. Aprender es mucho más fácil. Los proyectos son archivos XML, pero no están relacionados con el formato XML de Wix. (sin embargo, puede importar sus proyectos Wix, por lo que no puede volver a empezar desde cero)

A diferencia de Wix, Advanced Installer también tiene ediciones comerciales. Todos están disponibles en la misma aplicación, por lo que no es necesario descargar un SKU por separado para obtener la versión gratuita.

Puede crear paquetes MSI desde cero pero también puede editar paquetes existentes de MSI. Lo mismo para los paquetes AppX y App-V.

Descargo de responsabilidad: Trabajo en la creación de equipos Advanced Installer, mira mi perfil para más detalles.