2010-04-28 32 views
10

Tôi đang làm việc trên một dự án trình cài đặt cửa sổ. Và bây giờ tôi chỉ muốn phần mềm chỉ có thể được cài đặt trên Windows 7 hoặc Windows Server 2008 R2 hệ thống, tôi cố gắng sử dụng này:Cách kiểm tra hệ thống là Windows 7 hoặc Windows Server 2008 R2 trong Trình cài đặt Wix?

<Condition Message='Windows Server 2008 R2 or Windows 7 is required'>(VersionNT = 600 AND ServicePackLevel = 1) OR VersionNT = 601 </Condition> 

nhưng nó vẫn có thể được cài đặt trên Windows Vista. Hãy giúp tôi!

Cảm ơn bạn!

+1

Ở đây bạn có trang microsoft về các phiên bản windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370556(v=vs.85) .aspx –

Trả lời

9

Chỉ cần kiểm tra cho VersionNT 601 hoặc mới hơn, Windows 7 và Server 2008 R2 both have the same value.

<Condition Message="Win7 or 2008 R2 required"><![CDATA[Installed OR VersionNT >= 601]]></Condition> 
+0

lưu ý bổ sung: áp phích gốc hỏi cách kiểm tra một phiên bản hệ điều hành cụ thể - sử dụng toán tử "=". đây là một sai lầm lớn mà không bao giờ nên được thực hiện! thay vào đó chúng ta cần sử dụng toán tử "> =". điều này đã được bao gồm trong câu trả lời hiện tại của saschabeaumont. tôi chỉ muốn chỉ ra rằng yêu cầu như được nêu trong câu hỏi ban đầu là loại không hợp lệ. chúng ta cần phải tránh những sai lầm như vậy. – Opmet

1

Vista và Server 2008 trước SP2 có cùng số phiên bản chính. Bạn cũng cần phải tìm Wix tương đương với 'VER_NT_SERVER' (InstallShield). (Tại nơi làm việc bây giờ, không có Wix cài đặt ở đây)

22

Xem here cho một ví dụ

<Condition Message='Windows 95'>Version9X = 400</Condition> 
<Condition Message='Windows 95 OSR2.5'>Version9X = 400 AND WindowsBuild = 1111</Condition> 
<Condition Message='Windows 98'>Version9X = 410</Condition> 
<Condition Message='Windows 98 SE'>Version9X = 410 AND WindowsBuild = 2222</Condition> 
<Condition Message='Windows ME'>Version9X = 490</Condition> 
<Condition Message='Windows NT4'>VersionNT = 400</Condition> 
<Condition Message='Windows NT4 SPn'>VersionNT = 400 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows 2000'>VersionNT = 500</Condition> 
<Condition Message='Windows 2000 SPn'>VersionNT = 500 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows XP'>VersionNT = 501</Condition> 
<Condition Message='Windows XP SPn'>VersionNT = 501 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows XP Home SPn'>VersionNT = 501 AND MsiNTSuitePersonal AND ServicePackLevel = n</Condition> 
<Condition Message='Windows Server 2003'>VersionNT = 502</Condition> 
<Condition Message='Windows Vista'>VersionNT = 600</Condition> 
<Condition Message='Windows Vista SP1'>VersionNT = 600 AND ServicePackLevel = 1</Condition> 
<Condition Message='Windows Server 2008'>VersionNT = 600 AND MsiNTProductType = 3</Condition> 
<Condition Message='Windows 7'>VersionNT = 601</Condition> 
<Condition Message='Windows 8'>VersionNT = 602</Condition> 
6

Bạn có thể sử dụng thuộc tính MsiNTProductType để phát hiện xem đó có phải là os máy chủ hay không. Kết hợp với kiểm tra phiên bản NT, bạn có thể kiểm tra xem bạn có Windows Server 2008R2 hay không. Điều này sẽ trông giống như sau:

<Condition Message="Windows Server 2008R2 required"> 
    <![CDATA[(VersionNT = 601 AND MsiNTProductType > 1) OR Installed]]> 
</Condition> 
Các vấn đề liên quan