任何人都可以列出在Windows上以编程方式安装应用程序所需的步骤。除了复制他们需要的文件之外,还需要执行哪些额外步骤,以便您的应用程序成为Windows中的一等公民(即显示在程序列表中,卸载列表等等。)
我试图谷歌这个,但没有运气。
BTW:这是针对一个非托管的c ++应用程序(在Qt中开发),所以如果我不需要,我宁愿不涉及.net框架。答案 0 :(得分: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"
答案 1 :(得分:7)
我认为您在这里看到答案的主题是您应该使用安装程序而您不应该自己编写安装程序。使用许多安装程序制造商之一,例如Inno Setup,InstallSheild或其他任何人推荐的。
如果你试图自己编写安装程序,你可能会做错了。这对你个人而言并不轻微。这只是安装人员应该考虑的很多小细节,以及许多可能出错的问题,如果你想自己编写安装程序,那么你只需要完成所有这些事情。这意味着你需要进行大量的研究和大量的测试。省去麻烦。
除了复制文件外,安装任务也会有很大差异,具体取决于您的程序需求。也许您需要在“开始”菜单上放置一个图标;安装程序工具应该有一种方法可以非常轻松地实现这一点,自动填写客户在安装中先前选择的安装位置,甚至可以为快捷方式的标签选择正确的本地语言。
您可能需要创建注册表项,例如文件关联或许可。您的安装程序工具应该已经有一种简单的方法来指定要创建或修改的键和值。
您可能需要注册COM服务器。这是一个很常见的操作,安装程序工具可能会在文件复制后操作中指定它。
如果您选择的安装程序工具尚未提供某些操作,该工具可能会提供一种方法来添加自定义操作(可能通过脚本语言),或者可能通过链接您编写的DLL中的外部代码包含在您的安装程序中。自定义操作可能包括从特定网站下载更新,发送电子邮件或清点已安装公司的其他产品。
安装工具应提供的最后几件事是应用升级到现有安装的方法,以及卸载程序的方法,撤消所有这些安装任务(删除文件,恢复备份,取消注册COM服务器等)。
答案 2 :(得分:5)
我使用Inno Setup来打包我的C ++软件。与InstallShield等重型解决方案相比,它非常简单。所有内容都可以包含在一个setup.exe中,而无需创建所有这些疯狂的批处理脚本等等。
答案 3 :(得分:2)
听起来您需要查看Windows Installer系统。如果您需要细节,请参阅official documentation。有关新闻,请阅读安装程序团队的blog。最后,由于您是程序员,您可能希望像程序员那样构建安装程序。 WiX 3.0是我的首选工具 - 开源代码,从微软启动。从this tutorial on WiX开始。这很好。
答案 4 :(得分:1)
innosetup的GUI(强烈推荐)是Istool
您还可以使用Visual Studio中内置的MSI安装程序,这是一个更陡峭的学习曲线(即很痛苦),但如果您在企业环境中安装软件则非常有用。
答案 5 :(得分:1)
要让您的程序显示在“开始”程序菜单中, 您需要创建文件夹 C:\ Documents and Settings \ All Users \ Start Menu \ Programs 并为要启动的程序添加了快捷方式。 (如果您希望列出您的申请 直接在“开始”菜单或程序子菜单中, 你会把你的捷径放在相应的目录中)
要以编程方式创建捷径,您可以使用IShellLink (See MSDN article).
由于您要卸载,因此您不希望简单地删除DLL或其他常见文件而不检查依赖项。 我建议使用安装/安装生成器,特别是现在Vista非常安全,滚动自己的安装变得相当复杂 如果您需要的不仅仅是一个可执行文件和一个开始菜单快捷方式。
我已经使用Paquet Builder设置生成器已有好几年了。 (注册版本包括卸载)。
答案 6 :(得分:0)
你已经掌握了主要步骤。您遗漏的一个是安装在“开始”菜单上,并提供创建桌面和/或快速启动图标的选项。
我建议你按照杰里米的建议来研究使用安装程序。