如何在启动条件中访问TargetPlatform属性?

时间:2010-11-10 10:27:57

标签: deployment windows-installer launch-condition

我正在尝试从“启动条件”中的条件访问TargetPlatform属性值(可以在Deployment项目中设置)。

基本上,如果在该计算机上安装了64位版本的Office,我试图告诉应用程序不要将自己安装为32位应用程序。因此,我需要以某种方式获取应用程序的位数并将其置于启动状态。

我可以从注册表中获取Office的一点点,但我不知道如何从安装程序访问TargetPlatform。

谢谢!

3 个答案:

答案 0 :(得分:2)

以下是两个链接:

从上面的链接中,您可以推断出您无法从MSI安装程序中定位两个平台。您需要有两个安装程序。根据安装程序的构建方式,x86或x64将取决于安装程序解释某些常量的方式,这些常量告诉文件的位置 - 程序文件程序文件(x86)

您无法在运行时更改安装程序的TargetPlatform。

你可以做的可能是将两个安装程序打包到第三个安装程序,并根据安装的Office版本,你说你可以获得运行子安装程序x86或子安装程序x64,这将实际安装应用程序文件

如果MSI安装程序不是最重要的要求,我会选择NSIS。如果不是至少将MSI安装程序打包到NSIS安装程序中。它非常容易令人难以置信地。根据经验,NSIS比MSI更酷。

答案 1 :(得分:1)

我现在已经读了几遍这个问题而且我并不是100%肯定我明白你要做什么。你有一个32位应用程序,如果他们安装了32位Office(2010我假设)你只想安装吗?如果安装了64位办公室,您是否还要安装64位版本?

我不确定为什么你需要关心TargetPlatform属性,因为如果你知道安装了64位Office,你必须定义为64位操作系统。如果安装了32位Office,你可能是64位操作系统,但这真的很重要吗?你说过你关心的是Office的不足之处。

我认为,从我读过的内容来看,如果你有一个AppSearch将这个位置拉成一个属性,你可以使用一个使用该属性的LaunchCondition以及“或者已安装”(以处理能够如果首先卸载Office,请卸载您的应用程序,并且没问题。

答案 2 :(得分:1)

在安装开始执行检查之前添加自定义操作。使用Installer类来执行自定义操作。您可以使用OnBeforeInstall事件来读取注册表项并根据需要检查位数。抛出异常将导致安装中止,但可能有更简洁的方法来执行此操作。