I have problem during installing visual c++ runtime libraries for windows 7.
I prepare the setup using installshield 2010,their is an option to set visual c++ 2010 as prerequisites but no option for VC++ 2008.
How I can create(or anybody created already) .prq file, so that I can build my application.
Please help me as soon as possible.
You can download the prerequisite files using the link from the AltPrqURL attribute from one of the installed .prg files (default location c:\Program Files (x86)\InstallShield\2012SpringLE\SetupPrerequisites) and change this link according to your needs. e.g.:
http://saturn.installshield.com/is/prerequisites/microsoft visual c++ 2008 sp1 redistributable package (x86).prq
add the following lines for Windows Server 2003 and Windows 8 support:
<operatingsystemcondition MajorVersion="6" MinorVersion="0" PlatformId="2" CSDVersion="" Bits="1" ProductType="2|3"></operatingsystemcondition>
<operatingsystemcondition MajorVersion="6" MinorVersion="2" PlatformId="2" CSDVersion="" Bits="1"></operatingsystemcondition>
http://saturn.installshield.com/is/prerequisites/microsoft visual c++ 2008 sp1 redistributable package (x64).prq
add the following lines for Windows Server 2003 and Windows 8 support:
<operatingsystemcondition MajorVersion="6" MinorVersion="0" PlatformId="2" CSDVersion="" Bits="4" ProductType="2|3"></operatingsystemcondition>
<operatingsystemcondition MajorVersion="6" MinorVersion="2" PlatformId="2" CSDVersion="" Bits="4"></operatingsystemcondition>
The Visual C++ 2010 Redistributable Package (x64) is also missing from InstallShield 2012 LE: http://saturn.installshield.com/is/prerequisites/microsoft visual c++ 2010 redistributable package (x64).prq
Important: my Visual Studio 2012 + InstallShield 2012 LE did not list the new x64 redistributables with their default name. Solution: just change the file names.
You can use your VC++ 2010 prq file and just edit it. Download the VC++ 2008 and place it on the appropriate folder. Update the prq file by updating the condition as well as the source for your executable file.
I had the same problem, and I found the .prq file on the Internet for VC++ 2008. This is the content of the file:
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="1" Comparison="2" Path="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\D20352A90C039D93DBF6126ECE614057" FileName="" ReturnValue=""/>
</conditions>
<operatingsystemconditions>
<operatingsystemcondition MajorVersion="5" MinorVersion="0" PlatformId="2" CSDVersion="" ServicePackMajorMin="4"/>
<operatingsystemcondition MajorVersion="6" MinorVersion="1" PlatformId="2" CSDVersion="" Bits="1" ProductType="1"/>
<operatingsystemcondition MajorVersion="6" MinorVersion="0" PlatformId="2" CSDVersion="" Bits="1"/>
<operatingsystemcondition MajorVersion="5" MinorVersion="2" PlatformId="2" CSDVersion="" Bits="1" ProductType="2|3"/>
<operatingsystemcondition MajorVersion="5" MinorVersion="1" PlatformId="2" CSDVersion="" Bits="1" ProductType="1"/>
</operatingsystemconditions>
<files>
<file LocalFile="<ISProductFolder>\SetupPrerequisites\VC 2008 SP1 Redist\vcredist_x86.exe" URL="http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe" CheckSum="5689D43C3B201DD3810FA3BBA4A6476A" FileSize="0,4216840"/>
</files>
<execute file="vcredist_x86.exe" cmdline="/q" cmdlinesilent="/q" returncodetoreboot="3010,8192,1641,1046" requiresmsiengine="1"/>
<properties Id="{0BE9572E-8558-404f-B0A5-8C347D145655}" Description="This prerequisite installs the Microsoft Visual C++ 2008 SP1 Redistributable Package for x86-based systems." AltPrqURL="http://saturn.installshield.com/is/prerequisites/microsoft visual c++ 2008 sp1 redistributable package (x86).prq"/>
<behavior Reboot="2"/>
</SetupPrereq>
This file should be saved into C:\XXX\InstallShield\YYYY\SetupPrerequisites\ as Microsoft Visual C++ 2008 SP1 Redistributable Package (x86).prq. Restart your IS an it should be appear in the redistributable option. You could also use InstallShield Prerequisite Editor to change some options or create a new one.
Related
I am building an MSI with custom dialogs, but I am not customizing the Welcome Dialog. I have a valid Product ID and Upgrade ID and AllowSameVersionUpgrades is also not there. The following is the UI code, which is being referenced in my Product.wxs.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<WixVariable Id="WixUIBannerBmp" Value="Images\Banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="Images\dialog.bmp" />
<UI Id="CustomUI">
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
<!--Standard Dialog References needed to compile-Starts-->
<DialogRef Id="WelcomeDlg" />
<DialogRef Id="DiskCostDlg" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FatalError" />
<DialogRef Id="FilesInUse" />
<DialogRef Id="UserExit" />
<!--Standard Dialog References needed to compile-Ends-->
<DialogRef Id="CustLicenseAgmtDlg"/>
<DialogRef Id="InstallDlg"/>
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustLicenseAgmtDlg">NOT Installed AND NOT PATCH</Publish>
<Publish Dialog="CustLicenseAgmtDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
<Publish Dialog="CustLicenseAgmtDlg" Control="Next" Event="NewDialog" Value="BrowsePathDlg">1</Publish>
<Publish Dialog="BrowsePathDlg" Control="Back" Event="NewDialog" Value="CustLicenseAgmtDlg">1</Publish>
<Publish Dialog="BrowsePathDlg" Control="Next" Event="NewDialog" Value="InstallDlg">1</Publish>
<Publish Dialog="InstallDlg" Control="Back" Event="NewDialog" Value="BrowsePathDlg">1</Publish>
</UI>
<InstallUISequence>
<Show Dialog="WelcomeDlg" Before="ProgressDlg">NOT Installed OR PATCH</Show>
</InstallUISequence>
<UIRef Id="WixUI_Common" />
<UIRef Id="WixUI_ErrorProgressText" />
</Fragment>
</Wix>
First time, the installer runs fine and installs the files. But from the next time, it is not showing the error that, it is already installed. Rather it jumps from the first to the last screen in a flash. But if I rebuild this MSI project in VS and run the new installer, it shows the error. I am not sure what am I doing wrong. Can anyone please help?
You are confusing what 'being installed' means.
You explicitly have a condition on showing your WelcomeDlg of NOT Installed OR PATCH this means you'll never show your WelcomeDlg when your product is already installed. "Installed" in this case is the special property that is set when this product is already installed.
The confusion is probably around "this product". What this means is that the installer with the same product GUID is already present on the system.
I'm guessing you have <Product Id="*"> in your installer. When you rebuild you get another Product GUID so when you run that new installer you built, even though it has everything else exactly the same as your old installer, the Product GUID is different. In Windows' eyes, this is a completely separate product so it will not set the "Installed" property and you'll show your welcome dialog. Since you, I assume, have some property that is set when your product is installed, it will show your "Already installed" error.
If you set your display condition to just 1 I think you'll get the behaviour you are expecting.
<InstallUISequence>
<Show Dialog="WelcomeDlg" Before="ProgressDlg">1 AND NOT REMOVE~="ALL"</Show>
</InstallUISequence>
I added the AND NOT REMOVE~="ALL" becuase I'm not too sure what will happen if you try to uninstall your product without that there. I think it would show the welcome dialog when you uninstall maybe? You'll have to test it with and without the extra AND on the dialog condition.
I think you should re-evaluate whether or not this is actually what you want to do because this seems kind of a weird behaviour to implement in your installer. It should already know its installed by default.
There are 4 elements that control this behavior
Product Id
Product UpgradeCode
Product Version
MajorUpgrade
If you want your installer to correctly block if it's version is installed (and replace itself if you are installing a new version) then you need those values to look like this
Product Id = * - essentially different each time you build the installer
Product UpgradeCode = Same GUID each time - use uuidgen to generate a guid and hardcode this into your element
Product Version = a Major.Minor.Revision version number set appropriately
<Product Id="*" UpgradeCode="guid" Version="1.0.1"
A MajorUpgrade element exists
<MajorUpgrade AllowSameVersionUpgrades="no" DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
With those elements set, once 1.0.1 is installed, future attempted installs (even if you have rebuilt the installer) will fail.
Bumping the version number to 1.0.2, rebuilding the installer, and running the install will result in 1.0.1 being uninstalled, and 1.0.2 being installed.
Note that you can set the "AllowSameVersionUpgrades" to "Yes" to allow the same version to be "reinstalled" over the existing one
I've got a problem when launching a Canopy test in a Windows box:
Unhandled Exception: System.MissingMethodException: Method not found: 'Microsoft
.FSharp.Core.FSharpFunc`2<System.String,System.String> canopy.core.get_xpath()'.
at <StartupCode$UITest>.$Program.main#()
I guess this is because when compiling it, my Visual Studio 2012 restored Nuget packages and spitted this in the console output:
Consider app.config remapping of assembly "FSharp.Core, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "4.3.0.0" [C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\v4.0\FSharp.Core.dll] to Version "4.4.0.0" [C:\Users\Andres\Documents\Code\endtoendtests\packages\FSharp.Core.4.0.0.1\lib\net40\FSharp.Core.dll] to solve conflict and get rid of warning.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3247: Found conflicts between different versions of the same dependent assembly.
C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\fsc.exe -o:obj\x86\Debug\UITest.exe -g --noframework --define:DEBUG --optimize- --tailcalls- --platform:x86 -r:C:\Users\Andres\Documents\Code\endtoendtests\packages\canopy.0.9.52\lib\canopy.dll -r:C:\Users\Andres\Documents\Code\endtoendtests\packages\FSharp.Core.4.0.0.1\lib\net40\FSharp.Core.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Drawing.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Numerics.dll" -r:C:\Users\Andres\Documents\Code\endtoendtests\packages\Selenium.WebDriver.2.53.0\lib\net40\WebDriver.dll --target:exe --warnaserror:76 --vserrors --validate-type-providers --LCID:1033 --utf8output --fullpaths --flaterrors --highentropyva- "C:\Users\Andres\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.fs" AssemblyInfo.fs Program.fs
UITest -> C:\Users\Andres\Documents\Code\endtoendtests\UITest\bin\Debug\UITest.exe
How to exactly add this remapping to fix this problem?
Managed to get it to work with this App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="4.3.0.0" newVersion="4.4.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
This must be because I've never installed F#, so that I'm using the version that comes with my VS2012 (v3.0). I know I know, I should upgrade to 3.1, or 4.0 even.
Since I updated my installshield version from 2012 Spring to 2013, my installer is no longer installing Visual C++ redistributable package if needed.
My application is targeting x86 platform, that's why I need vc_redistx86 to be installed on user's PC. It is the same application for both x64 and x86 PCs.
Because I'm now using Visual Studio 2012 update 4, I've created my own .prq:
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="1" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}" FileName="" ReturnValue=""></condition>
</conditions>
<operatingsystemconditions>
<operatingsystemcondition MajorVersion="6" MinorVersion="0" PlatformId="2" CSDVersion="" ServicePackMajorMin="2"></operatingsystemcondition>
<operatingsystemcondition MajorVersion="6" MinorVersion="1" PlatformId="2" CSDVersion="" Bits="1" ServicePackMajorMin="1"></operatingsystemcondition>
<operatingsystemcondition MajorVersion="6" MinorVersion="2" PlatformId="2" CSDVersion=""></operatingsystemcondition>
</operatingsystemconditions>
<files>
<file LocalFile="<ISProductFolder>\SetupPrerequisites\VC 2012 Redist\x86\vcredist_up4_x86.exe" URL="http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe" CheckSum="7F52A19ECAF7DB3C163DD164BE3E592E" FileSize="0,6554576"></file>
</files>
<execute file="vcredist_up4_x86.exe" cmdline="/q" cmdlinesilent="/q" returncodetoreboot="1641,3010"></execute>
<properties Id="" Description="This prerequisite installs the Microsoft Visual C++ 2012 Runtime Libraries (x86)." AltPrqURL=""></properties>
<behavior Reboot="2"></behavior>
</SetupPrereq>
Of course, I've downloaded the vc_redist_x86 for VS2012 update 4, and placed there \SetupPrerequisites\VC 2012 Redist\x86\vcredist_up4_x86.exe
Is it correct?
You have to make sure that you .prq file embbed the right operating system conditions in order to be installed correctly on every target machine.
According to this MSDN Page - Windows versions, you'll find what is missing and what lines need to be added.
For example here are only requirements for windows 7 and 8 x86 versions, if you want to deploy on x64 you are missing this kind of xml condition :
-- operatingsystemcondition MajorVersion="6" MinorVersion="0" PlatformId="2" CSDVersion="" Bits="4" ServicePackMajorMin="2"> operatingsystemcondition
Cheers :)
I have installed Phalanger from http://phalanger.codeplex.com/ and installed Phalanger Tools from the built-in market-place function in my Visual Studio 2012 Ultimate distribution. After doing this, every time I boot start Visual Studio I get a dialog-box with the error:
If I examine ActivityLog.xml I find the following errors (all other elements omitted):
<?xml version="1.0" encoding="utf-16"?>
<?xml-stylesheet type="text/xsl" href="ActivityLog.xsl"?>
<activity>
<entry>
<record>16</record>
<time>2013/10/04 14:43:55.426</time>
<type>Error</type>
<source>VisualStudio</source>
<description>Loading UI library</description>
<guid>{712C84E3-B447-4283-ABF3-D00B161E63FE}</guid>
<hr>800a006f</hr>
<errorinfo>Cannot find the requested resource.</errorinfo>
</entry>
<entry>
<record>63</record>
<time>2013/10/04 14:44:03.569</time>
<type>Error</type>
<source>VisualStudio</source>
<description>SetSite failed for package [PHP.Project.PHPProjectPackage, PHP.VS, Version=1.8.4608.0, Culture=neutral, PublicKeyToken=17116b35d45f8bb8]</description>
<guid>{9DD0D70B-6760-4C96-B1DC-03AAF937D95A}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo>Object reference not set to an instance of an object.</errorinfo>
</entry>
<entry>
<record>64</record>
<time>2013/10/04 14:44:03.574</time>
<type>Error</type>
<source>VisualStudio</source>
<description>End package load [PHP.Project.PHPProjectPackage, PHP.VS, Version=1.8.4608.0, Culture=neutral, PublicKeyToken=17116b35d45f8bb8]</description>
<guid>{9DD0D70B-6760-4C96-B1DC-03AAF937D95A}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo>Object reference not set to an instance of an object.</errorinfo>
</entry>
</activity>
Does anyone have a take on what I could do to relieve this?
It seams, you have PHP Tools for Visual Studio, not Phalanger Tools. Also it is possible you installed PHP Tools in addition to Phalanger Tools.
Try to uninstall both, and install Phalanger Tools only.
When I write a c++ program (such as B3DTest.exe) depend on a third party dll(such B3DViews.dll) (the vendor is small company). The program that I wrote is very simple just to test one function in the dll. When I start my program (the needed header file, .lib files and .dll file are linked). I come across the problem below.
The application failed to initialize properly (0xc0150002). Click on OK to terminate
the application.
I find out that the program exit before enter my main function. the out put of the vs2008 IDE is
LDR: LdrpWalkImportDescriptor() failed to probe e:\tlh1987\vs2008projects\B3DTest\Debug\B3DViews.dll
for its manifest, ntstatus 0xc0150002
I put the program and the dll in an other target computer and it works fine. So I think it must be something wrong with my computer. I searched the event log and it says below for three event
EventID: 32
Description: Dependent Assembly Microsoft.VC80.CRT could not be found and Last Error was The referenced
assembly is not installed on your system.
EventID: 59
Description: Resolve Partial Assembly failed for Microsoft.VC80.CRT. Reference error message: The
referenced assembly is not installed on your system.
EventID: 59
Description: Generate Activation Context failed for Generate Activation Context
E:\tlh1987\vs2008projects\B3DTest\Debug\B3DViews.dll. Reference error message: The operation completed
successfully.
I search The Internet to find out that someone fix a similar problem by installing Microsoft Visual C++ 2005 Redistributable Package and the Microsoft Visual C++ 2005 SP1 Redistributable Package (x86).
I download the two files and installed it. However, it couldn't work!
Another solution on the internet is Put the files of Microsoft.VC80.CRT folder which include 3 dll and Microsoft.VC80.MFC folder (also include 4 dll) and finally the correspond manifest files in the dir of B3DTest.exe (my program). However, It still didn't work! But something has changed the event log where there is only 1 event error which says below:
EventID: 59
Description: Generate Activation Context failed for Generate Activation Context
E:\tlh1987\vs2008projects\B3DTest\Debug\B3DViews.dll. Reference error message: The operation completed
successfully.
Somebody told me that may be the version of the VC80.CRT and the VC80.MFC in my computer didn't match the version number in the B3DViews.dll (which is distributed by the vendor). Then I open the B3DViews.dll with emacs.exe and search the manifest attached to the dll. It says below:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.6195"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50727.6195"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50608.0"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
the version number made me confused. How can it is 8.0.50727.6195 as well as 8.0.50608.0 It think it should be one version number (not two as showed above). I find the Microsoft.VC80.CRT dlls and the Microsoft.VC80.MFC dlls and also the correspond manifest files (all the version numbers is 8.0.50727.6195 in the C:\Windows\WinSxS and put it in the dir the same as B3DTest.exe (my program). It couldn't work either.
In order to figure out the problem. I used the Dependency Walker for Win32 (x86) to profile my program i.e. B3DTest.exe. It says below:
Started "B3DTEST.EXE" (process 0x680) at address 0x00400000. Successfully hooked module.
Loaded "NTDLL.DLL" at address 0x7C920000. Successfully hooked module.
Loaded "KERNEL32.DLL" at address 0x7C800000. Successfully hooked module.
DllMain(0x7C920000, DLL_PROCESS_ATTACH, 0x00000000) in "NTDLL.DLL" called.
DllMain(0x7C920000, DLL_PROCESS_ATTACH, 0x00000000) in "NTDLL.DLL" returned 1 (0x1).
DllMain(0x7C800000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" called.
DllMain(0x7C800000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" returned 1 (0x1).
Injected "DEPENDS.DLL" at address 0x08370000.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" called.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" returned 1 (0x1).
Loaded "B3DVIEWS.DLL" at address 0x10000000. Successfully hooked module.
LDR: LdrpWalkImportDescriptor() failed to probe e:\tlh1987\vs2008projects\b3dtest\debug\B3DViews.dll
for its manifest, ntstatus 0xc0150002
First chance exception 0xC0150002 (Unknown) occurred in "NTDLL.DLL" at address 0x7C9873BE.
**Second chance exception 0xC0150002 (Unknown) occurred in "NTDLL.DLL" at address 0x7C9873BE.**
Exited "B3DTEST.EXE" (process 0x680) with code -1072365566 (0xC0150002).
It drives me crazy. I wan't to figure it out. any help will appreciated!
This(http://www.codeguru.com/forum/showthread.php?t=408061) may help to the problem. But I can not figure it out by reading it.
my system is windows xp sp3 and I using VS2008. I didn't install VS2005.
I figure it out somehow. with the help of this Q&A
http://social.msdn.microsoft.com/Forums/nb-NO/vssetup/thread/fa559cb7-eabc-4f41-a3bc-84ed7ae089fc
first, I uninstalled all the Microsoft Visual C++ 2005 Redistributable Package
second, I installed Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) directly. It didn't work either, but when I installed
Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update
It just works. It seems that the Update del the old version of Microsoft Visual C++ 2005 Redistributable Package, then make the new one (the sp1 one) to work.
First, I uninstalled all the Microsoft Visual C++ 2005 Redistributable Package
second, I installed Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) directly. It didn't work either, but when I installed
Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update
It just works
0xC0150002L is STATUS_SXS_CANT_GEN_ACTCTX. The tool for debugging activation context issues is SxsTrace. Try this:
touch program.exe
SxsTrace Trace -logfile:SxsTrace.etl
[run program.exe]
SxsTrace Parse -logfile:SxsTrace.etl -outfile:SxsTrace.txt
SxsTrace.txt will contain the name of the assembly that is referenced and can't be found.