Installing applications using Microsoft runtime .dll's: Difference between revisions

From Yggenyk
Jump to navigation Jump to search
No edit summary
Line 49: Line 49:


====Embed manifest, and add merge module to installation====
====Embed manifest, and add merge module to installation====
# Right click on the project, and selece Add - New item...
# Under General select Application Manifest File
# On the project's properties Application tab, under Resources, select Manifest: '''app.manifest''' instead of '''Embed manifest with default settings''.
Add following this to app.manifest:
:<dependency>
::    <dependentAssembly>
:::      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
::    </dependentAssembly>
:</dependency>


====Installing runtime modules using standalone installers====
====Installing runtime modules using standalone installers====


<google>ENGELSK</google>
<google>ENGELSK</google>

Revision as of 17:30, 10 March 2012

Side By Side error

If you build an application that uses native .dll's that uses Microsoft Visual C++ runtime .dll's you need to install these runtime .dll's together with your application, or you will get errors like these:


SideBySide error dialog.png


In the event log, there is an Event 33, SideBySide error.

Activation context generation failed for "C:\Release\NativeManifestTest.exe". Dependent Assembly Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" could not be found. Please use sxstrace.exe for detailed diagnosis.

If you start the application from Microsoft Visual Studio, you can get the error:

Error while trying to run project: Unable to start program 'C:\dev\mickey\NativeManifestTest\NativeManifestTest\bin\Release\NativeManifestTest.exe'.
This application has failed to start because the application configuration is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix this problem. For more details, please see the application event log.

WinSxs Tracing Utility

SxsTrace.exe is an application that traces why an executeable can't find it's dependencies. Usage: SxsTrace [Options]
Options:

Trace -logfile:FileName [-nostop]
Enabling tracing for sxs.
Tracing log is saved to FileName.
If -nostop is specified, will not prompt to stop tracing.
Parse -logfile:FileName -outfile:ParsedFile [-filter:AppName]
Translate the raw trace file into a human readable format and save the result to ParsedFile.
Use -filter option to filter the output.
Stoptrace
Stop the trace if it is not stopped before.

Example: SxsTrace Trace -logfile:SxsTrace.etl

SxsTrace Parse -logfile:SxsTrace.etl -outfile:SxsTrace.txt

Assembly Searching Sequence

Ways to distribute the dependencies

Installing copy in local folder

Create a sub folder called Microsoft.VC80.CRT in same folder where the .exe filel is located. Place following 4 files in the Microsoft.VC80.CRT folder

  1. Microsoft.VC80.CRT.manifest
  2. msvcm80.dll
  3. msvcp80.dll
  4. msvcr80.dll

The files can be downloaded here:

Embed manifest, and add merge module to installation

  1. Right click on the project, and selece Add - New item...
  2. Under General select Application Manifest File
  3. On the project's properties Application tab, under Resources, select Manifest: app.manifest' instead of Embed manifest with default settings.

Add following this to app.manifest:

<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>

Installing runtime modules using standalone installers

<google>ENGELSK</google>

id=siteTree