2012-04-29 27 views
1

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

例如:我创建安装插件文件到第三方应用程序的C盘目录下的安装程序。但是,如果用户具有旧版本的第三方应用程序,则目标目录将会不同。

因此,安装程序需要确定C驱动器上的第三方应用程序的版本。如果它的新版本我将插件文件安装到C:// Program Files // 3rdPartyApplication //并且如果它的旧版本我安装到C:// 3rdPartyApplication //

因此,Windows安装程序可以执行逻辑和如果不是,它可以运行批处理文件,可以做到这一点?

+1

您使用的是Wix吗? :http://wix.sourceforge.net/ – 2012-04-29 02:46:43

+0

如果你告诉我如何知道第三方应用程序的版本是什么,什么是“旧版本”和什么是“新的”,我会告诉你一个批次文件,做你想做的。 – Aacini 2012-04-30 05:04:48

回答

1

的“安装程序”只是一个普通的应用程序,旨在解开它的内容到一个人的硬盘驱动器,并且可能执行类似注册表修改操作。

如果你使用像安装例如屏蔽一个安装程序,您必须看那个安装文件,看看有什么可以做的。大多数安装程序应用程序都有某种区域来创建自定义脚本。

你也可以建立你自己的,这真的不是很难。

+0

当然,我不会推荐自己编写安装程序应用程序:它看起来并不那么简单。你必须关心很多不同的事情,你可能不会预料到会发生。这就是为什么建议使用经过全面测试的现有安装程序套件。有免费的开源套件以及商业选择。 – 2012-04-30 09:23:20

1

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

您如何编写安装程序逻辑取决于您使用的安装程序套件。对于检测C:\Program Files\3rdPartyApplicationC:\3rdPartyApplication是否存在的应用程序,你可以使用的WiX ToolsetFileSearch元素,期待通过Windows安装程序文件:Searching for Existing Applications, Files, Registry Entries or .ini File Entries

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

1

我想给出一个不同的观点。 Windows Installer是一种声明性域特定的编程语言。它不是一个图灵完整的通用编程语言。它并不打算像任何其他应用程序一样。它可以用通用编程语言(如C++/C#)编写的自定义动作进行扩展,但它应该遵循相同的声明式方法,在这种方法中,将“如何”从“要做什么”中分离出来。

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

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

0

是的,Windows安装程序可以像正常应用程序一样执行逻辑。

您可以使用WiX的工具集,由阿列克谢的建议来完成这项工作。

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

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

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

相关问题