是否有可用于创建高级MSI安装程序的免费/开源工具。
我找到了following list MSI创作工具,但是我对MSI技术知之甚少,很难从列表中看出哪些工具实际上可以用来从头创建新的MSI安装程序(而不是简单地查看或编辑现有的安装程序)
答案 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.
:
您还需要提供:
要分发的文件使用,例如:
指定 <$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进行快捷方式方面表现不佳,因此您也必须手动更改。