all groups > visual studio .net setup > june 2006 >
You're in the

visual studio .net setup

group:

ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines



ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines Gabriel Michaud
6/10/2006 10:55:53 AM
visual studio .net setup: Hello,

I would like to know if anybody experienced problems with
ClickOnce/bootstrapper installs where the installation is failing when
installing bootstrapper packages? This is only happening on Win9x machines.
I have a Windows 98 SE computer that has this problem, and I recall getting
phone calls from customers with Windows ME with this problem.

The following message is displayed to the user: Setup has detected that the
file 'my.msi' has either changed since it was initially published or may be
corrupt.

The installation log shows that the call to WinVerifyTrust
returned -2146762749 (TRUST_E_SUBJECT_FORM_UNKNOWN), which, according to
error lookup, means that "The form specified for the subject is not one
supported or known by the specified trust provider". Not much information
is available on MSDN regarding this error message. My MSI file is signed,
however the same thing happens even if I do not sign the file.

We're asking users having this problem to manually install the .msi file
contained in the bootstrapper package, but this is very annoying and I don't
understand why it is only happening on some computers.

Anybody knows what's causing this problem?

Thank you.

Gabriel
RE: ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines v-garych NO[at]SPAM online.microsoft.com (
6/12/2006 12:00:00 AM
Hi Gabriel,

Thank you posting!

[quoted text, click to view]

This problem may be caused by the version of Windows 98 and Windows ME's
Windows Installer is too low. The WinVerifyTrust operation is only
available on Windows Installer version 2.0 or later.

The Windows 98 and Windows ME could only support to the Windows Installer
2.0. And their default Windows Installer's version would below 1.2.

So in this scenario, I suggest you can install the Windows Installer 2.0 to
those Windows systems at first. If it doesn't resolve this problem yet, it
appears the Bootstrapper's installation package has used some Windows
Installer features beyond the Windows Installer's 2.0 version. If so, you
may need to deploy those redistributables manually to the Windows ME and
Windows 98 machines.

You can dwonload the Windows Installer 2.0 Redistributable in the following
link:

Windows Installer 2.0 Redistributable for Windows 95, 98, and Me
http://www.microsoft.com/downloads/details.aspx?familyid=cebbacd8-c094-4255-
b702-de3bb768148f&displaylang=en


Thanks!

Best regards,

Gary Chang
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
Re: ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines Gabriel Michaud
6/13/2006 8:45:28 AM
Computers encountering this problem are already running Windows Installer
3.0. wintrust.dll is also installed and the version is correct. Furthermore,
the bootstrapper would log "Wintrust not on machine" or "Could not get
procedures out of Wintrust." if there was a problem with the DLL itself (I
checked the disassembly of setup.bin).

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.

[quoted text, click to view]
Re: ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines v-garych NO[at]SPAM online.microsoft.com (
6/14/2006 3:20:20 AM
Hi Gabriel,

[quoted text, click to view]

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.

[quoted text, click to view]

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
Windows NT Workstation 4.0. So the root cause of this problem should be
the Windows ME or Windows 98 doesn't support this function:

WinVerifyTrust
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/s
ecurity/winverifytrust.asp

Thanks!

Best regards,

Gary Chang
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
Re: ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines Gabriel Michaud
6/14/2006 10:13:26 AM
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]
Re: ClickOnce/Bootstrapper: WinVerifyTrust failing on some Windows 9x machines v-garych NO[at]SPAM online.microsoft.com (
6/15/2006 3:45:55 AM
Hi Gabriel,

I think there may be some misunderstanding. I don't mean the Win98/WinME
cannot run the Bootstrapper. What I mentioned in my previous reply is the
WinVerifyTrust API function is not supported in Win98/WinME system.

Based on my experience, the Bootstrapper program may not really call
WinVerifyTrust function in the system which doesn't support it, it could
just return successful code to resume the prerequisite's installation.

Thanks for your understanding!

Best regards,

Gary Chang
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
AddThis Social Bookmark Button