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

Deployment 如何在启动条件下访问TargetPlatform属性?,deployment,windows-installer,launch-condition,Deployment,Windows Installer,Launch Condition,我正在尝试访问TargetPlatform属性值,您可以从启动条件中的条件在部署项目中设置该属性值 基本上,我试图告诉应用程序,如果64位版本的Office安装在该计算机上,则不要将其自身安装为32位应用程序。因此,我需要以某种方式获得应用程序的比特数,并将其置于启动状态 我可以从注册表中获取Office的信息,但我不知道如何从安装程序中访问TargetPlatform 谢谢 这个问题我已经读了好几遍了,但我不能100%肯定我理解你想做什么。您是否有一个32位的应用程序,并且您只想在他们安装了3

我正在尝试访问TargetPlatform属性值,您可以从启动条件中的条件在部署项目中设置该属性值

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

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


谢谢

这个问题我已经读了好几遍了,但我不能100%肯定我理解你想做什么。您是否有一个32位的应用程序,并且您只想在他们安装了32位Office 2010的情况下进行安装?如果安装了64位office,是否也要安装64位版本

我不确定您为什么需要关心TargetPlatform属性,因为如果您知道安装了64位Office,根据定义,您必须是64位操作系统。如果安装了32位Office,您可能是64位操作系统,但这真的很重要吗?你说你关心的是办公室而不是窗户


我想,从我读到的来看,如果你有一个AppSearch,它能将比特率拉到一个属性中,你可以使用一个LaunchCondition,该属性与你的应用程序一起使用,或者如果先卸载Office,它可以处理卸载你的应用程序,这样就可以了。

我已经读了好几遍这个问题,我不能100%肯定我理解了你想做什么。您是否有一个32位的应用程序,并且您只想在他们安装了32位Office 2010的情况下进行安装?如果安装了64位office,是否也要安装64位版本

我不确定您为什么需要关心TargetPlatform属性,因为如果您知道安装了64位Office,根据定义,您必须是64位操作系统。如果安装了32位Office,您可能是64位操作系统,但这真的很重要吗?你说你关心的是办公室而不是窗户

从我所读到的内容来看,我认为,如果你有一个AppSearch,可以将比特率拉到一个属性中,那么你可以使用一个LaunchCondition,该属性与Office一起使用,或者一起安装,以便在Office首先卸载时,能够卸载你的应用程序,并且一切正常。

这里有两个链接:

从上面的链接可以推断,不能从MSI安装程序中同时针对这两个平台。您需要有两个安装程序。根据安装程序的构建方式,x86或x64将取决于安装程序解释某些常量的方式,这些常量指示在何处安装所有文件-程序文件或程序文件x86

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

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

如果MSI安装程序不是我最需要的。如果不是,则至少将“到MSI安装程序”打包为NSIS安装程序。这是难以置信的简单。从经验来看,NSI比MSI酷多了。

这里有两个链接:

从上面的链接可以推断,不能从MSI安装程序中同时针对这两个平台。您需要有两个安装程序。根据安装程序的构建方式,x86或x64将取决于安装程序解释某些常量的方式,这些常量指示在何处安装所有文件-程序文件或程序文件x86

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

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


如果MSI安装程序不是我最需要的。如果不是,则至少将“到MSI安装程序”打包为NSIS安装程序。这是难以置信的简单。从经验来看,NSI比MSI酷多了。

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

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

嘿,Liviu,你有没有链接可以链接到我如何将这两个安装程序合并到第三个安装程序中?很简单

实际上,这是一个非常复杂的讨论。官方MSI只能标记为x86或x64,但有一些技术可以创建混合安装程序,这些安装程序可以以某些有限的方式针对这两种安装程序。更复杂的是在考虑托管代码与非托管代码以及为office等32位或64位的应用程序创建加载项时。。。问题是我是32位应用还是64位应用?回答或计划起来并不容易。@Andrei在环顾四周后发现,嵌套的MSI包似乎难以适应。所以我推荐NSIS。我一直在安装MSI包。只需用InstallShield点击几下就可以设置了。@Christopher Well InstallShield可以说是另一种猫。但是在另一个MSI中嵌套2个MSI,而不使用InstallShield。因为你还需要一个非常昂贵的许可证。嘿,Liviu,你有没有链接到我如何将这两个安装程序合并成第三个安装程序?这实际上是一个非常复杂的讨论。官方MSI只能标记为x86或x64,但有一些技术可以创建混合安装程序,这些安装程序可以以某些有限的方式针对这两种安装程序。更复杂的是在考虑托管代码与非托管代码以及为office等32位或64位的应用程序创建加载项时。。。问题是我是32位应用还是64位应用?回答或计划起来并不容易。@Andrei在环顾四周后发现,嵌套的MSI包似乎难以适应。所以我推荐NSIS。我一直在安装MSI包。只需用InstallShield点击几下就可以设置了。@Christopher Well InstallShield可以说是另一种猫。但是在另一个MSI中嵌套2个MSI,而不使用InstallShield。对于IS,您还需要一个非常昂贵的许可证。Chris,我的意思是:如果用户有64位Outlook,他下载了我的应用程序的32位版本,我想立即停止安装。那么我认为您根本不需要TargetPlatform。你说你有办法检测64位Office。我可以假设您正在使用AppSearch吗?当未安装Office、安装32位Office和安装64位Office时,您的属性名称和值是多少?我认为这就是编写启动条件所需关注的全部内容。您提到您正在使用Windows Installer,但我无法知道您是否正在使用InstallShield、Wise、WiX、Visual Studio部署项目或其他。这里有一篇很好的博客文章供您阅读,我正在使用VisualStudio部署项目。当前搜索Outlook bitness的方法是查看注册表:Chris,我的意思是:如果用户有64位Outlook,他下载了我的应用程序的32位版本,我想立即停止安装。那么我认为你根本不需要TargetPlatform。你说你有办法检测64位Office。我可以假设您正在使用AppSearch吗?当未安装Office、安装32位Office和安装64位Office时,您的属性名称和值是多少?我认为这就是编写启动条件所需关注的全部内容。您提到您正在使用Windows Installer,但我无法知道您是否正在使用InstallShield、Wise、WiX、Visual Studio部署项目或其他。这里有一篇很好的博客文章供您阅读,我正在使用VisualStudio部署项目。当前搜索Outlook bitness的方法是查看注册表:是否在ProjectInstaller类的自定义代码中获取Office的注册表设置?如果满足条件,是否可以检查当前平台并中止安装?是否在ProjectInstaller类的自定义代码中获取Office的注册表设置?你不能检查那里的当前平台,如果你的条件满足,就中止安装吗?