You are right about Windows Installer 3.0. The computer is running Windows
Installer 2.00.2600.2.
I am well aware that the Platform SDK states that this works only on Windows
2000 and over, but I have not found anything that states that the
bootstrapper will not work on Windows 98. In fact it works perfectly on most
Windows 98 and Windows ME computers. The setup bootstrapper is a component
of the .NET framework 2.0 and always call WinVerifyTrust on all
prerequisites before installing, no matter what the underlying platform is.
Also, here's an excerpt from MSDN Magazine
(
http://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/):
"Minimal platform requirements Since the purpose of the Bootstrapper is to
easily pre-install application dependencies, it is essential that it have
few, if any, dependencies itself. The only hard dependency the Bootstrapper
has is the C runtime, which is embedded in the Bootstrapper executable
through static linking and therefore does not require a separate
installation. The Bootstrapper will load other Windows® DLLs such as msi.dll
to perform Windows Installer application code checking, and Wintrust.dll to
verify component signatures. These DLLs, however, come pre-installed with
Windows 98 and higher."
The problem is either that the setup bootstrapper should not call
WinVerifyTrust on Win98/WinME, or that there is a particular issue (and I'd
like to know what it is) on some computers with this API.
For your information, here is the log created by the bootstrapper. You can
clearly see that WinVerifyTrust is getting called correctly and returns 0
(success) for every file except the MSI file (which is properly signed).
We're testing in VMware using a clean Windows 98 SE install with Internet
Explorer 6.0:
Setup: Initializing Initialize UI
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Setup: Initializing the Application
Setup: Initializing Install Engine
InstallEngine: Setting property ProcessorArchitecture=Intel
InstallEngine: Setting property Version9x=4.10
InstallEngine: Setting property AdminUser=true
Setup: Initializing Install UI
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Package: Running checks for package 'Microsoft Data Access Components 2.8',
phase 1
RegistryCheck: Reading value 'FullInstallVer' of registry key
'HKLM\Software\Microsoft\DataAccess'
RegistryCheck: Read string value '2.80.1022.3'
Package: Microsoft Data Access Components 2.8 RunCheck result: 1
Package: Running checks for package '.NET Framework 1.1', phase 1
AssemblyCheck: Could not Create AssemblyName
RegistryCheck: Reading value 'Version' of registry key
'HKLM\Software\Microsoft\Internet Explorer'
RegistryCheck: Read string value '6.0.2800.1106'
Package: .NET Framework 1.1 RunCheck result: 2
Package: Running checks for package 'Dynacom Windows Component Update',
phase 1
MsiProductCheck: Running MsiProductCheck with ProductCode
'{0EFDBD7A-B09A-4E26-8784-1B293346E0C8}'
MsiProductCheck: MsiQueryProductState returned '-1'
Package: Dynacom Windows Component Update RunCheck result: 2
Setup: Getting package count
Setup: Package count = 2
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Looking for font: MS Shell Dlg
Found font: MS Shell Dlg
Setup: Copying files to temporary directory "C:\WINDOWS\TEMP\VSD51B4.TMP\"
FileManager: Getting 'dotnetfx 1.1\dotnetfx.exe' from file map
FileManager: Getting 'dotnetfx 1.1\dotnetfx.exe' from file map
FileManager: Copying from 'C:\PROGRAM FILES\DYNACOM TECHNOLOGIES,
INC\SETUP\dotnetfx 1.1\dotnetfx.exe' to
'C:\WINDOWS\TEMP\VSD51B4.TMP\dotnetfx 1.1\dotnetfx.exe'
FileManager: Getting 'DynacomWCU\wcu.msi' from file map
FileManager: Getting 'DynacomWCU\wcu.msi' from file map
FileManager: Copying from 'C:\PROGRAM FILES\DYNACOM TECHNOLOGIES,
INC\SETUP\DynacomWCU\wcu.msi' to
'C:\WINDOWS\TEMP\VSD51B4.TMP\DynacomWCU\wcu.msi'
FileManager: Getting 'dotnetfx 1.1\dotnetfx.exe' from file map
FileManager: Getting 'DynacomWCU\wcu.msi' from file map
InstallEngine: Beginning install with package 0
Package: Running checks for package '.NET Framework 1.1', phase 2
AssemblyCheck: Could not Create AssemblyName
RegistryCheck: Reading value 'Version' of registry key
'HKLM\Software\Microsoft\Internet Explorer'
RegistryCheck: Read string value '6.0.2800.1106'
Package: .NET Framework 1.1 RunCheck result: 2
FileManager: Getting 'dotnetfx 1.1\dotnetfx.exe' from file map
Wintrust: WinVerifyTrust returned 0
WinTrust: File trusted
Command: Installing using command line
'"C:\WINDOWS\TEMP\VSD51B4.TMP\dotnetfx 1.1\dotnetfx.exe" /q:a /c:"install
/l /q"'
Command: Process exited with code 0
Package: Running checks for package '.NET Framework 1.1', phase 4
AssemblyCheck: Could not Create AssemblyName
RegistryCheck: Reading value 'Version' of registry key
'HKLM\Software\Microsoft\Internet Explorer'
RegistryCheck: Read string value '6.0.2800.1106'
Package: .NET Framework 1.1 RunCheck result: 2
Package: Running checks for package 'Dynacom Windows Component Update',
phase 2
MsiProductCheck: Running MsiProductCheck with ProductCode
'{0EFDBD7A-B09A-4E26-8784-1B293346E0C8}'
MsiProductCheck: MsiQueryProductState returned '-1'
Package: Dynacom Windows Component Update RunCheck result: 2
FileManager: Getting 'DynacomWCU\wcu.msi' from file map
Wintrust: WinVerifyTrust returned -2146762749
WinTrust: File not trusted
Error: Setup has detected that the publisher of file
'C:\WINDOWS\TEMP\VSD51B4.TMP\DynacomWCU\wcu.msi' cannot be verified.
In the meantime, I was able to patch the bootstrapper engine (setup.bin) so
that it ignores the return code of WinVerifyTrust.
Gabriel
[quoted text, click to view] ""Gary Chang[MSFT]"" <v-garych@online.microsoft.com> wrote in message
news:mc45BG2jGHA.4948@TK2MSFTNGXA01.phx.gbl...
> Hi Gabriel,
>
>>Computers encountering this problem are already
>>running Windows Installer 3.0. wintrust.dll is also
>>installed and the version is correct.
>
> Do you mean the Windows ME or Windows 98 machines has already installed
> the
> Windows Installer 3.0?
>
> However the Windows Installer 3.0 cannot be deployed to the Windows
> systems
> below Windows 2000.
>
>>I would also like to mention that the WinVerifyTrust
>>check is failing only for MSI files - the bootstrapper
>>is able to check EXE as well as install the .NET
>>framework 2.0 before failing on a MSI file.
>
> I don't think so. You know the bootstrapper itself also will also launch
> an
> msi installation package to install the .NET Framework. (The msi file is
> contained in the redistributable's exe file).
>
> By the way, I also check the WinVerifyTrust API in the PSDK documentation,
> it requires Windows Vista, Windows XP, Windows 2000 Professional, or