[wpkg-users] Checks in wpkg.js
Vladimir Psenicka
vladimir.psenicka at prodeco.cz
Mon Sep 15 10:55:06 CEST 2008
Thank you for your explanation I will try 64bit version of WPKG client.
Is there any date for releasing 64bit WPKG client as stable version?
Rainer Meier napsal(a):
> Hi Vladimir,
>
> Vladimir Psenicka wrote:
>> Hi,
>>
>> I have problem with checking conditions in registry on Vista 64bit with
>> WPKG service.
>>
>>
>> Example: SP1 install on Vista
>>
>>> <package
>>> id="vistasp1"
>>> name="Windows Vista Service Pack 1 All Language Standalone (KB936330) 32bit/64bit"
>>> revision="1"
>>> reboot="true"
>>> priority="2000">
>>>
>>> <check type="logical" condition="and">
>>> <check type="registry" condition="equals" path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName" value="Windows Vista (TM) Business" />
>>> <check type="registry" condition="equals" path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion" value="Service Pack 1" />
>>> </check>
>>>
>>> <install cmd='%COMSPEC% /C IF %PROCESSOR_ARCHITECTURE% == x86 "%SOFTWARE%\sp-nt\WinVista\32bit\Windows6.0-KB936330-X86-wave1.exe" /quiet'>
>>> <exit code="3010" />
>>> </install>
>>>
>>> <install cmd='%COMSPEC% /C IF %PROCESSOR_ARCHITECTURE% == AMD64 "%SOFTWARE%\sp-nt\WinVista\64bit\Windows6.0-KB936330-X64-wave1.exe" /quiet'>
>>> <exit code="3010" />
>>> </install>
>>>
>>> </package>
>>
>> I have Vista with SP1 integrated, but instalation runs on it because
>> conditions are not met. Wpkg.js is returning different value that is
>> really in key and subkeys, In app log on Vista wpkg.js says that in
>> registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
>> NT\CurrentVersion\ProductName" has this value "Windows (TM) Vista
>> Business". But if I run regedit on Vista I see in this value "Windows
>> Vista (TM) Business" in the same key.
>>
>> "Windows (TM) Vista Business" != "Windows Vista (TM) Business"
>>
>> I think this issue is only on 64bit system...
>> I attach screenshot from Vista64
>>
>> Do you have better idea how check if system is Windows Vista with
>> service pack 1 than in registry?
>
> Looks like you have been trapped by Microsoft Registry redirection.
> Windows x64 redirects registry read attempts of 32-bit applications to
> HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\...
>
> So a 32-bit application reading
> "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
> NT\CurrentVersion\ProductName" actually reads from
>
> "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows
> NT\CurrentVersion\ProductName"
>
> while a 64-bit application reads from
> "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
> NT\CurrentVersion\ProductName"
>
> NOTE: The 64-bit key is not available to 32-bit applications.
>
> The CSDVersion entry is NOT available within the virtualized 32-bit
> registry tree. I don't know why Microsoft decided to hide this
> information from 32-bit applications.
>
>
> If you want to access the _real_ (64-bit) ProductName and CSDVersion
> keys you need to execute WPKG with 64-bit version of cscript.exe (which
> will be able then to access the keys).
> To do so please use the latest version of WPKG client (1.3.5 at the time
> of writing) in its 64-bit version. This will launch 64-bit cscript.exe.
>
> Alternatively you might change your client configuration and run
> wrapper.js instead of wpkg.js on your 64-bit workstations. The
> wrapper.js script will run 64-bit cmd.exe (which you have to put on the
> share as well) and therefore execute 64-bit cscript.exe when invoking
> wpkg.js. This was done to "escape" the 32-bit-only environment in order
> to allow WPKG to access all (including 64-bit) files and registry paths.
>
> Please open wrapper.js with a text editor to get some more instructions
> how to use it.
>
> Well, it might be easier to use the (yet unreleased) 64-bit version of
> WPKG client.
>
>
> Ah yes, by the way - there might be an easier version to check for SP1.
> Use the 'ver' command to get the Windows version printed on the shell.
> So you might use this output to detect the windows version. A simple
> script wrapped around packed into a cmd file could return 0 or 1 to WPKG
> (execute-type check) to detect if SP1 is installed or not.
>
> br,
> Rainer
More information about the wpkg-users
mailing list