为Visual Studio项目创建Windows安装程序

3
我想为我的项目创建一个安装程序,主要是为了处理越来越多的外部依赖项。
问题是这些组件大多以不同的方式分布,因此我需要一个可以处理以下所有内容的安装程序。我看了很多东西,但很多都似乎没有涵盖我需要的所有内容(例如如何使用Visual Studio设置项目安装DirectX...),或者甚至不创建适当的Windows安装程序(例如.msi)。
  • 将我的应用程序文件复制到目标目录
  • 创建开始菜单和桌面快捷方式
  • 安装DirectX(即调用dxsetup.exe /silent)
  • 安装VC9 CRT redist(在msdn上看起来像是“合并模块”...)
  • 只有在以下情况之一成立时才需要管理员权限
    • DirectX和/或VC9 CRT尚未存在或需要更新
    • 为所有用户安装
    • 安装到用户没有写入权限的目录
  • 如果在完成之前中止安装,则可以回滚所有内容
  • 生成卸载程序以及安装程序
  • 确保用户接受所有必需的EULA(我的,VC9 Redist,DirectX等)
例如,我已经为我的应用程序文件和VC9 CRT设置项目工作,但是我没有看到任何办法告诉它只使用/silent参数运行dxsetup.exe而不是将其和所有其他dx安装程序提取到应用程序目录或其他地方...
编辑:
还有,如果我可以拥有一个统一的x86和x86-64安装程序,那将非常好,它将根据操作系统是否为64位来安装正确的组件(例如myapp_x86.exe或myapp_x64.exe)。
编辑2:
忘记提到,免费或低成本的解决方案也很受欢迎,因为我也需要一些较小的个人东西的解决方案。

不想听起来像个粉丝,但是InstallShield可以在一个项目中处理64位和32位的安装(它们输出到不同的目录)。 - Byron Whitlock
3个回答

5

WiX 是你想要的。你需要阅读v3文档和示例,因为它不是一件简单的事情。一旦你开始,你会有后续问题,你应该将其作为新问题发布。

另请参阅WiX tutorial,但请记住它是针对v2的,并且在v3中很多内容已过时或废弃。


2
如果你有经济能力,可以使用Installshield,它可以非常专业地完成所有这些工作。它将包括合并文件,并无缝安装。Installshield 有其特点,但它非常易于使用和强大。一旦编写完应用程序,就不需要再考虑安装程序的事情了。
以下是我喜欢的一些不错特性:
  • 通过对源代码进行差异比较来创建补丁安装程序,因此您可以使用较小的大小分发补丁。
  • 创建升级版本,更新应用程序的注册表和版本号。防止旧版本被安装。
  • 创建一个好用的卸载程序。
  • 很容易添加合并模块。
  • 如果需要,可以编写脚本,否则可以使用 GUI(大多数时候都不需要编写脚本)。
如果你买不起,可以选择NSIS。它非常强大和广泛使用,但需要在文本编辑器中编写代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接