如何在Windows上进行编程安装?

5
有人能列出在Windows上编程安装应用程序所需的步骤吗?除了将文件复制到它们需要的位置之外,还需要哪些额外的步骤,以使您的应用程序成为Windows中的一流公民(即显示在程序列表、卸载列表等中)。
我尝试过谷歌搜索,但没有成功。
顺便说一下:这是针对未管理的c++应用程序(使用Qt开发),因此如果不必要,最好不要涉及.net框架。
7个回答

10

我强烈推荐使用NSIS。这是一个开源项目,开发非常活跃,并且很难匹敌/超越它的可扩展性。

如果要将您的程序添加到“添加/删除程序”(或“程序和功能”)列表中,请添加以下注册表键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAM_NAME]
"DisplayName"="PROGRAM_NAME"
"Publisher"="COMPANY_NAME"
"UninstallString"="PATH_TO_UNINSTALL_PROGRAM"
"DisplayIcon"="PATH_TO_ICON_FILE"
"DisplayVersion"="VERSION"
"InstallLocation"="PATH_TO_INSTALLATION_LOCATION"

我不知道。也许有人讨厌NSIS。 - Andrew Ensley
也许有人认为你并没有真正回答问题,而是只谈到了一个例子。 - Rob Kennedy

7
我认为你会在这里看到的答案主题是,你应该使用安装程序,而不是自己编写安装程序。使用众多的安装制作工具之一,如Inno Setup,InstallSheild或其他人推荐的任何工具。
如果您试图自己编写安装程序,那么您可能会做错。这并不是针对您个人的轻蔑。只是因为安装程序应该考虑到很多小细节,有很多事情可能会出错,如果你想自己编写安装程序,你就必须把所有这些事情都做对。这意味着需要你进行大量的研究和测试。省点事吧。
除了复制文件之外,安装任务根据程序需求而异。也许您需要将一个图标放在“开始”菜单上;安装程序应该有一种非常容易的方法来实现这一点,自动填充客户先前选择的安装位置,并可能选择正确的本地语言作为快捷方式标签。
您可能需要创建注册表项,例如用于文件关联或许可证的项。您的安装程序工具应该已经有一个简单的方法来指定要创建或修改的键和值。
您可能需要注册COM服务器。这是一个很常见的操作,您的安装程序工具可能有一种指定它作为后文件复制操作的一部分的方法。
如果您选择的安装程序工具没有提供某些操作,那么该工具可能会提供一种添加自定义操作的方法,可能是通过脚本语言,也可能是通过链接包含在您的安装程序中的DLL的外部代码。自定义操作可能包括从特定网站下载更新,发送电子邮件或对已经安装的来自您公司的其他产品进行清单。
最后,安装程序工具应该提供的几个功能是,提供升级现有安装的方法,并提供卸载程序的方法,撤消所有这些安装任务(删除文件,恢复备份,取消注册COM服务器等)。

你的回答似乎总结了其他帖子的要点。非常感谢! - JimDaniel

5

我使用Inno Setup来对我的C++软件进行打包。与InstallShield等重量级解决方案相比,它非常简单。所有内容都可以包含在单个setup.exe文件中,而不需要创建所有这些疯狂的批处理脚本等。

在这里查看:http://www.jrsoftware.org/isinfo.php


在获取InnoSetup时,确保同时获取GUI Inno Tools;它可以使安装脚本的设置变得非常容易,并且可以运行编译器来构建安装程序,而无需转到命令提示符。 - Ken White

2
看起来您需要了解Windows安装程序系统。如果您需要详细了解,请查看官方文档。如果需要了解最新消息,请阅读安装程序团队的博客。最后,由于您是一名程序员,您可能希望像程序员一样构建安装程序。WiX 3.0是我首选的工具-开源代码,并且由Microsoft支持。从这个WiX教程开始学习吧。它很好。

1

innosetup的GUI(强烈推荐)是Istool

您也可以使用Visual Studio内置的MSI安装程序,但学习曲线较陡峭(即很麻烦),但如果您在企业环境中安装软件,则非常有用。


1
要让您的程序显示在“开始”程序菜单中, 您需要创建文件夹 C:\Documents and Settings\All Users\Start Menu\Programs 并添加一个启动程序的快捷方式。 (如果您希望应用程序直接列在“开始”菜单或程序子菜单中, 您可以将快捷方式放在相应的目录中)
要编程地创建快捷方式,您可以使用IShellLink (请参阅MSDN文章)
由于您想要卸载,这变得更加复杂,因为您不希望仅仅删除DLL或其他常见文件而没有检查依赖项。 我建议使用设置/安装生成器,特别是现在Vista非常挑剔,如果您需要的不仅仅是单个可执行文件和开始菜单快捷方式,那么它变得相当复杂。
我已经使用Paquet Builder设置生成器多年了。 (注册版本包括卸载)。

虽然你可以使用"C:\Documents and Settings\All Users\Start Menu\Programs",但是最好使用适当的环境变量。 - Max Lybbert
更具体地说,使用类似 CSIDL_COMMON_PROGRAMS 或 CSIDL_PROGRAMS 的东西,请参见:http://msdn.microsoft.com/en-us/library/bb762494.aspx - Roger Nelson
这取决于您是否作为管理员运行,如果是,则是仅限管理员或所有用户安装。但是,在编写安装程序时,第二个任务(文件复制之后)应该是设置“添加/删除程序”条目以清理一切。 - MSalters

0

你已经掌握了主要步骤。你遗漏的一步是在开始菜单上安装并提供创建桌面和/或快速启动图标的选项。

我建议你考虑使用安装程序,就像Jeremy建议的那样。


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