免费的MSI创作工具

时间:2009-09-29 09:28:47

标签: windows-installer

是否有可用于创建高级MSI安装程序的免费/开源工具。

我找到了following list MSI创作工具,但是我对MSI技术知之甚少,很难从列表中看出哪些工具实际上可以用来从头创建新的MSI安装程序(而不是简单地查看或编辑现有的安装程序)

5 个答案:

答案 0 :(得分:13)

我更喜欢使用WiX来创建MSI安装程序。也许这不是生成MSI最简单的方法(因为它基于XML),但它是免费的,你会在互联网上找到很多模板脚本。像WiX这样的脚本基础工具根本不需要处于劣势,它非常适合自动构建。

据我所知,Visual Studio 2010应该支持开箱即用的WiX。

答案 1 :(得分:3)

Advanced Installer有一个永久免费的版本。它允许您创建Simple projects,如链接教程。

同样的项目类型也可以与免费的Visual Studio extension集成。

优点是Advanced Installer提供了一个高级,易于使用的GUI,用于构建和自定义安装程序。学习它要容易得多。这些项目是XML文件,但它们与Wix的XML格式无关。 (但是,您可以导入您的Wix项目,因此您不必从头开始

与Wix不同,Advanced Installer也有商业版。所有这些都在同一个应用程序中提供,因此您无需下载单独的SKU即可获得免费版本。

它可以从头创建MSI包,但它也可以编辑现有的MSI包。对于AppX和App-V软件包也是如此。

免责声明:我在团队建设高级安装程序中工作,请参阅我的个人资料以获取更多详细信息。

答案 2 :(得分:1)

喜欢 喜欢 MakeMSI。 (现在我更喜欢WiX,一旦你想出来就更容易处理,输出更好,也不依赖于Visual Studio。)

原始答案如下。


MakeMSI有一个陡峭的学习曲线,对MakeMSI的总体感觉不是很专业,但结果却给出了很好的结果,而且它似乎并不依赖于Visual Studio。


以下是我刚刚构建.msi(修改后删除品牌)的示例:

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                    support@example.com
#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.
        : 

您还需要提供:

  • LeftSide.bmp - 503x314(除左侧160x314外为空)
  • PrettyBanner.bmp - 500x60
  • gamename.bmp - 48x48

要分发的文件使用,例如:

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

通过右键单击.mm并选择正确的项目来构建MSI。

答案 3 :(得分:0)

您可能需要查看MSI工具:https://live.gnome.org/msitools,您可以使用低级工具和API构建MSI,或使用更复杂的类似WiX的工具wixl。整个代码是开放的,交叉编译友好(glib / libgsf,没有.net等)。它基于Wine MSI实现。

对于签名,osslsigncode从版本1.5开始支持MSI。

答案 4 :(得分:0)

我使用Wix Edit这是一种简单易用的方法来创建用于构建MSI的XML文件。 之后我必须手动编辑XML,为每个文件路径添加一个前导'\'。 此外,Wix Edit在设置WorkingDirectory进行快捷方式方面表现不佳,因此您也必须手动更改。