Wix工具集CustomAction,用于确定操作系统是windows 7/xp home edition还是starter edition,并显示非windows 7/xp home edition的消息

Wix工具集CustomAction,用于确定操作系统是windows 7/xp home edition还是starter edition,并显示非windows 7/xp home edition的消息,wix,windows-installer,wix3.7,Wix,Windows Installer,Wix3.7,我是Wix工具集安装新手。我正在使用WIX3.7和VisualStudio2010SP1 我正在学习一个使用引导程序的教程,其中Product.Wxs文件中有一条用于检查.NET framework 4.0是否已安装的条件消息。有一个PropertyRef Id变量和条件消息 <PropertyRef Id="NETFRAMEWORK40FULL"/> <Condition Message="This application requires .NET Framework 4.

我是Wix工具集安装新手。我正在使用WIX3.7和VisualStudio2010SP1

我正在学习一个使用引导程序的教程,其中Product.Wxs文件中有一条用于检查.NET framework 4.0是否已安装的条件消息。有一个PropertyRef Id变量和条件消息

<PropertyRef Id="NETFRAMEWORK40FULL"/>
<Condition Message="This application requires .NET Framework 4.0. Please install the .NET Framework then run  
   this installer again.">
  <![CDATA[Installed OR NETFRAMEWORK40FULL]]>
</Condition>

如何检查Windows XP Starter/Home和Windows 7 Starter/Home/Home高级版本的条件,并显示安装不支持列出的操作系统且需要专业版本的条件消息

我已经浏览了Wixtoolset网站上的链接,但没有任何帮助:

检查Windows版本

我还尝试将条件放在bootstrapper的Bundle.wxs文件中,如下所示:

<Bundle Name="!(loc.ProductName)" Compressed="yes" Version="1.2.6.0"  
SplashScreenSourceFile="Resources\SplashScreen.bmp" IconSourceFile="Resources\IXMWeb.ico"  Manufacturer="! 
(loc.ManufacturerName)" UpgradeCode="FED377E5-8762-48C4-B123-8D4AD89B0222" Condition="((VersionNT >= v5.1) AND 
(ServicePackLevel >= 3) AND NOT(NTSuitePersonal)) OR ((VersionNT >= v5.2) AND (ServicePackLevel >= 2)) OR 
(VersionNT >= v6.0 AND NOT(NTSuitePersonal))">

我已经看过一篇文章,我需要使用NTSuitePersonal而不是MsiNTSuitePersonal来检查这个版本是否是正在安装的家庭版


请让我知道在上述使用条件下我哪里不正确。

要检查Windows版本(即Windows XP、Vista、7、8等),您可以使用您提供的链接中描述的
VersionNT
-属性。要检查版本(即Home、Premium、Professional等),请根据,您可以使用注册表配置单元下的值
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

结合WiX,您可以进行注册表搜索,设置一个属性,然后在您的条件下使用此属性(我只能在Windows 7 Professional上验证确切的注册表项,即names
EditionID
):

条件开头的
Installed
-属性可确保仅当产品尚未安装时才验证条件。然后在括号内找到其他条件元素。我们确保在Windows 7上运行(
VersionNT=601和WindowsBuild>7100
),并且版本正确(
WINDOWSEDITION~=“Professional”
)。请注意,
~=
检查字符串不区分大小写。

有关条件语句的语法,您可以查看。当然,您可以使用
组合任何附加条件,并在适当的情况下使用括号将它们分组。在现实世界中,您很可能会遇到另一种情况,如Windows 7及更高版本。

Hi!谢谢。在我的情况下如何使用此属性id?我已经用一个示例和其他链接编辑了上面的答案。非常感谢!这对我有用。再次感谢。还有一件事,你能为wix推荐一些好的教程吗?学习wix的先决条件是什么。从我现在所能做的正常运转来看,一个人应该对以下几点有很好的理解:1。Windows安装程序2。XML 3。Wix变量4。WPF(对于引导程序)5。windows的注册表结构。还有什么应该知道的吗。请添加一些链接。再次感谢您。我们正在使用~=条件检查专业版。如何检查不区分大小写!=个人版?我的意思是,根据条件语句表,我使用的是WINDOWSEDITION“Personal”。但这种情况的评估结果是正确的。WINDOWSEDITION!=“个人”WINDOWSEDITION!~=“个人”WINDOWSEDITION~!=“Personal”它给了我一个错误。你应该试试MsiNTSuitePersonal属性,看看它是否是家庭版。
...

<Property Id="WINDOWSEDITION" Secure="yes">
    <RegistrySearch Id="WindowsEditionReg" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Name="EditionID" Type="raw" />
</Property>

...
<Condition Message="This application can only be installed on Windows 7 Professional with Service Pack 1.">
    <![CDATA[Installed OR (VersionNT = 601 AND WindowsBuild > 7100 AND WINDOWSEDITION ~= "Professional")]]>
</Condition>