2009-03-02 23 views
5

任何人都可以列出在Windows上以编程方式安装应用程序所需的步骤。除了复制他们需要的文件之外,还有哪些额外的步骤需要使您的应用成为Windows中的一流公民(即出现在程序列表,卸载列表等中)如何在Windows上编程安装?

我试图谷歌这个,但没有运气。

顺便说一句:这是一个非托管的C++应用程序(在Qt中开发),所以我宁愿不涉及.net框架,如果我不必。

回答

7

我认为主题,你会看到这里的答案是,你应该使用安装程序你不应该自己编写安装程序。使用许多安装程序制造商之一,如Inno Setup,InstallSheild或别人推荐的任何其他安装程序制造商。

如果您尝试自己编写安装程序,那么您可能会犯错。这对你个人来说并不轻微。只是安装程序应该考虑很多小细节,以及很多可能出错的地方,如果你想自己编写安装程序,你只需要把所有这些事情都做好。这意味着您需要进行大量的研究和大量测试。省去麻烦。

除了复制文件之外,安装任务也会有所不同,具体取决于您的程序需要什么。也许你需要在开始菜单上放一个图标;一个安装工具应该有一种方法可以很容易地实现,自动填充客户在安装中选择的安装位置,甚至可以为快捷方式的标签选择正确的本地语言。

您可能需要创建注册表项,例如文件关联或许可。您的安装程序工具应该已经有一个简单的方法来指定要创建或修改的键和值。

您可能需要注册一个COM服务器。这是一种常见的行为,您的安装程序工具可能会将其指定为文件后复制操作的一部分。

如果您选择的安装程序工具尚未提供某些操作,则该工具可能会提供一种方法来添加自定义操作(可能通过脚本语言或可能通过链接来自DLL的外部代码)写入包含在您的安装程序中。自定义操作可能包括从特定网站下载更新,发送电子邮件或清点贵公司已安装的其他产品。

一对夫妇的最后的东西,一个安装工具应该提供办法申请升级到现有的安装,办法卸载程序,撤消所有的安装任务(删除文件,还原备份,注销COM服务器等)。

5

我已经使用Inno Setup将我的软件打包为C++。与InstallShield等重型解决方案相比,它非常简单。一切都可以包含在一个setup.exe中,而无需创建所有这些疯狂的批处理脚本等等。

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

+0

在获得InnoSetup时,确保获得GUI Inno Tools;它使设置安装脚本非常简单,并且可以运行编译器来构建安装,而无需转到命令提示符。 – 2009-03-02 22:45:41

0

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

我鼓励你看看使用安装程序,如杰里米建议。

10

我强烈推荐NSIS。开源,非常活跃的开发,很难匹配/打败它的可扩展性。

你的程序添加到添加/删除程序(或程序和功能)列表中,添加下列REG键:

[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" 
+0

为什么选择投票? – 2009-03-02 22:54:02

+0

我不知道。也许有人讨厌NSIS。 – 2009-03-02 23:06:14

+0

也许有人认为你没有真正回答这个问题,而是只说了一个例子。 – 2009-03-03 01:25:31

1

为innosetup(强烈推荐)的GUI是Istool

你也可以使用内置于Visual Studio中的MSI安装程序,这是一个更陡峭的学习曲线(即很痛苦),但如果您在公司环境中安装软件,则会很有用。

2

这听起来像你需要检查Windows安装程序系统。如果您需要本质,请参阅official documentation。有关新闻,请阅读安装程序团队的blog。最后,既然你是一名程序员,你可能希望像程序员那样构建安装程序。 WiX 3.0是我的首选工具 - 开源代码,由微软引导。从this tutorial on WiX开始。这很好。

1

为了让你的程序在开始程序菜单显示, 您将需要创建文件夹 C:\ Documents和Settings \所有用户\开始菜单\程序 并增加了一个捷径,你想程序发射。 (如果你希望你的应用程序直接在开始菜单中列出 ,或者在程序的子菜单, 你会把你的短切相应目录中)

要programically创建一个快捷方式,你可以使用的IShellLink (See MSDN article).

由于您想要卸载,因为您不想简单地删除DLL或其他常见文件而不检查依赖关系,因此需要更多的参与。 我会推荐使用安装程序/安装生成器,尤其是在Vista如此持久的情况下,如果您需要的不仅仅是一个可执行文件和一个开始菜单快捷方式,它将变得相当复杂,推出自己的安装 。

我几年来一直在使用Paquet Builder设置发生器。 (注册版本包括卸载)。