1

Windows 安装程序可以像普通应用程序一样执行逻辑吗?

例如:我正在创建一个安装程序,它将插件文件安装到 C 驱动器上的第 3 方应用程序的目录中。但如果用户拥有旧版本的 3rd 方应用程序,则目标目录会有所不同。

因此安装程序需要确定 C 盘上的 3rd Party Application 的版本。如果它是新版本,我将插件文件安装到 C://Program Files//3rdPartyApplication//,如果它是旧版本,我安装到 C://3rdPartyApplication//

那么 Windows 安装程序可以执行逻辑吗?如果不能,它可以运行可以执行此操作的批处理文件吗?

4

4 回答 4

1

“安装程序”只是一个常规应用程序,旨在将其内容解压缩到个人硬盘上,并可能执行注册表修改等操作。

例如,如果您使用像 install shield 这样的安装程序,则必须查看该安装程序文档以了解它可以做什么。大多数安装程序应用程序都有某种区域来创建自定义脚本。

您也可以自己构建,这真的不是很难。

于 2012-04-29T02:44:32.167 回答
1

我想给出一个不同的观点。Windows Installer 是一种声明性域特定编程语言。它不是图灵完备的通用编程语言。它并不像任何其他应用程序一样。它可以通过用通用编程语言(如 C++/C#)编写的自定义操作进行扩展,但它仍应遵循相同的声明性方法,将“如何”做某事与“做什么”分开。

现在回答你问题的第二部分。Windows Installer 内置了搜索功能。阅读有关 AppSearch 标准操作和相关表(AppSearch、Signature、DrLocator、CompLocator、RegLocator)的 MSDN 主题您还可以对组件设置条件,并且可以动态设置目录目标,所以是的,有一些方法可以做您想做的事情.

需要更多信息来准确解释如何做到这一点。

于 2012-05-01T02:03:39.203 回答
1

是的,安装程序可以像常规应用程序一样执行逻辑。从这个角度来看,安装程序是一个常规应用程序。

您如何编写安装程序逻辑取决于您使用的安装程序套件。要检测应用程序是否存在于C:\Program Files\3rdPartyApplication或中C:\3rdPartyApplication,您可以使用WiX 工具集FileSearch的元素,查看 Windows 安装程序文档:搜索现有应用程序、文件、注册表项或 .ini 文件项

更复杂的逻辑可以通过自定义操作来实现。[自定义操作}(http://msdn.microsoft.com/en-us/library/aa368066.aspx) 可以用 JScript、VBScript、C/C++(DLL 或 EXE;但 EXE 无法与Windows 安装程序会话)。

于 2012-04-30T09:18:57.123 回答
0

是的,Windows Installer 可以像普通应用程序一样执行逻辑。

您可以按照 Alexey 的建议使用 WiX 工具集来完成工作。

您可以使用 FileSearch 元素 ( http://wix.sourceforge.net/manual-wix3/wix_xsd_filesearch.htm ) 检查文件是否存在或 RegistrySearch 元素 ( http://wix.sourceforge.net/manual-wix2 /wix_xsd_registrysearch.htm)以防您想使用注册表项进行检查。

或者,如果搜索不像检查文件或注册表那么简单,自定义操作将允许您编写托管或非托管代码(根据您的偏好)来检查安装了哪个版本的第 3 方应用程序。

根据搜索结果,您可以在运行时更改安装目录。类型 35 自定义操作可让您更改安装目录:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa368093%28v=vs.85%29.aspx

于 2012-05-01T13:09:40.877 回答