Commits

Dmitri Nesteruk committed 4bff390

installer + 1.9 release

Comments (0)

Files changed (13)

Pages/CodeAnnotationEditor.xaml.cs

 using System;
 using System.Drawing;
+using System.IO;
 using System.Runtime.InteropServices;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Interop;
 using System.Windows.Media.Imaging;
 using DmitriNesteruk.TypograFix.Common;
+using DmitriNesteruk.TypograFixImpl;
 
 namespace DmitriNesteruk.TypograFix.Pages
 {
 
     public static readonly DependencyProperty ProgrammingLanguageProperty =
       DependencyProperty.Register("ProgrammingLanguage", typeof(ProgrammingLanguage), typeof(CodeAnnotationEditor),
-                                  new UIPropertyMetadata(ProgrammingLanguage.None));
+                                  new UIPropertyMetadata(ProgrammingLanguage.None, UpdateRendering));
 
     public static readonly DependencyProperty MarkupProperty =
       DependencyProperty.Register("Markup", typeof(string), typeof(CodeAnnotationEditor),
-                                  new UIPropertyMetadata(string.Empty));
+                                  new UIPropertyMetadata(string.Empty, UpdateRendering));
+
+    private static void UpdateRendering(DependencyObject d, DependencyPropertyChangedEventArgs e)
+    {
+      var @this = d as CodeAnnotationEditor;
+
+      string markup = @this.Markup;
+      string annotation = null;
+      if (markup.Contains("%%%%"))
+      {
+        string[] parts = markup.Split(new[]{"%%%%"}, StringSplitOptions.None);
+        markup = parts[0];
+        annotation = parts[1];
+      }
+
+      var html = Generator.CodeFormat(@this.Markup, string.Empty, '#', App.ConversionOptions);
+      var finalMarkup = "[Consolas][12]" +
+        HtmlEncodedSourceCodeToMarkupConverter.Convert(html).Replace("<insertionpoint>", string.Empty);
+      
+      string generatedFilename = Generator.RegenerateFreeformImage(App.ConversionOptions, finalMarkup, int.MaxValue,
+                                                                   false);
+
+      using (var bmp = (Bitmap) Bitmap.FromFile(generatedFilename))
+      {
+        if (@this.lastBitmap != IntPtr.Zero)
+          DeleteObject(@this.lastBitmap);
+
+        @this.lastBitmap = bmp.GetHbitmap();
+        @this.CurrentImage = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
+                                                                   BitmapSizeOptions.FromEmptyOptions());
+      }
+    }
 
     private IntPtr lastBitmap = IntPtr.Zero;
 

Properties/AssemblyGlobalInfo.cs

 [assembly: ComVisible(false)]
 [assembly: CLSCompliant(true)]
 [assembly: NeutralResourcesLanguage("en-US")]
-[assembly: AssemblyVersion("1.8.0.0")]
-[assembly: AssemblyFileVersion("1.8.0.0")]
+[assembly: AssemblyVersion("1.9.0.0")]
+[assembly: AssemblyFileVersion("1.9.0.0")]
 
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{507F2416-B827-4AE1-BBC7-32A8459467D9}"
 	ProjectSection(SolutionItems) = preProject
 		ClassDependencies.dgml = ClassDependencies.dgml
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug no C++|x64 = Debug no C++|x64
 		Debug|x64 = Debug|x64
-		Release no C++|x64 = Release no C++|x64
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{059BB63D-C022-4A90-B3D8-D416018FD088}.Debug no C++|x64.ActiveCfg = Debug no C++|x64
-		{059BB63D-C022-4A90-B3D8-D416018FD088}.Debug no C++|x64.Build.0 = Debug no C++|x64
 		{059BB63D-C022-4A90-B3D8-D416018FD088}.Debug|x64.ActiveCfg = Debug|x64
 		{059BB63D-C022-4A90-B3D8-D416018FD088}.Debug|x64.Build.0 = Debug|x64
-		{059BB63D-C022-4A90-B3D8-D416018FD088}.Release no C++|x64.ActiveCfg = Release no C++|x64
-		{059BB63D-C022-4A90-B3D8-D416018FD088}.Release no C++|x64.Build.0 = Release no C++|x64
 		{059BB63D-C022-4A90-B3D8-D416018FD088}.Release|x64.ActiveCfg = Release|x64
 		{059BB63D-C022-4A90-B3D8-D416018FD088}.Release|x64.Build.0 = Release|x64
-		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Debug no C++|x64.ActiveCfg = Debug no C++|x64
-		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Debug no C++|x64.Build.0 = Debug no C++|x64
 		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Debug|x64.ActiveCfg = Debug|x64
 		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Debug|x64.Build.0 = Debug|x64
-		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Release no C++|x64.ActiveCfg = Release no C++|x64
-		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Release no C++|x64.Build.0 = Release no C++|x64
 		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Release|x64.ActiveCfg = Release|x64
 		{8C9A6ECC-6CA6-4ECA-B842-F35308679868}.Release|x64.Build.0 = Release|x64
-		{946CF735-A068-445C-9408-3FB2438A2515}.Debug no C++|x64.ActiveCfg = Debug no C++|x64
-		{946CF735-A068-445C-9408-3FB2438A2515}.Debug no C++|x64.Build.0 = Debug no C++|x64
 		{946CF735-A068-445C-9408-3FB2438A2515}.Debug|x64.ActiveCfg = Debug|x64
 		{946CF735-A068-445C-9408-3FB2438A2515}.Debug|x64.Build.0 = Debug|x64
-		{946CF735-A068-445C-9408-3FB2438A2515}.Release no C++|x64.ActiveCfg = Release no C++|x64
-		{946CF735-A068-445C-9408-3FB2438A2515}.Release no C++|x64.Build.0 = Release no C++|x64
 		{946CF735-A068-445C-9408-3FB2438A2515}.Release|x64.ActiveCfg = Release|x64
 		{946CF735-A068-445C-9408-3FB2438A2515}.Release|x64.Build.0 = Release|x64
-		{54FDD674-993D-4444-BE36-985927AE68DB}.Debug no C++|x64.ActiveCfg = Debug no C++|x64
-		{54FDD674-993D-4444-BE36-985927AE68DB}.Debug no C++|x64.Build.0 = Debug no C++|x64
 		{54FDD674-993D-4444-BE36-985927AE68DB}.Debug|x64.ActiveCfg = Debug|x64
 		{54FDD674-993D-4444-BE36-985927AE68DB}.Debug|x64.Build.0 = Debug|x64
-		{54FDD674-993D-4444-BE36-985927AE68DB}.Release no C++|x64.ActiveCfg = Release no C++|x64
-		{54FDD674-993D-4444-BE36-985927AE68DB}.Release no C++|x64.Build.0 = Release no C++|x64
 		{54FDD674-993D-4444-BE36-985927AE68DB}.Release|x64.ActiveCfg = Release|x64
 		{54FDD674-993D-4444-BE36-985927AE68DB}.Release|x64.Build.0 = Release|x64
-		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Debug no C++|x64.ActiveCfg = Debug no C++|x64
 		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Debug|x64.ActiveCfg = Debug|x64
 		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Debug|x64.Build.0 = Debug|x64
-		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Release no C++|x64.ActiveCfg = Release no C++|x64
-		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Release no C++|x64.Build.0 = Release no C++|x64
 		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Release|x64.ActiveCfg = Release|x64
 		{BD49323F-FBCC-406E-9582-ECF054EAF7B0}.Release|x64.Build.0 = Release|x64
 	EndGlobalSection
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
+		VisualSVNWorkingCopyRoot = 
 		EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35
-		VisualSVNWorkingCopyRoot = 
 	EndGlobalSection
 	GlobalSection(SpecExplorer.ActivityCompletionStatus) = preSolution
 		SpecExplorer.ActivityCompletionStatus = 

TypograFixImpl/AnnotationRasterizer/AnnotationRasterizer.cs

-using System.Drawing;
-using DmitriNesteruk.TypograFix;
-using DmitriNesteruk.TypograFix.Common;
-using Microsoft.WindowsAPICodePack.DirectX.Direct2D1;
-using Microsoft.WindowsAPICodePack.DirectX.DirectWrite;
-using Microsoft.WindowsAPICodePack.DirectX.WindowsImagingComponent;
+using System;
 
 namespace DmitriNesteruk.TypograFixImpl.AnnotationRasterizer
 {
+  using System.Drawing;
+
   public class AnnotationRasterizer
   {
-    private const int maxDimension = 1024;
-    private const string fontFamily = "Consolas";
-    public static Bitmap Rasterize(string markup, ProgrammingLanguage language)
+    public static void ApplyAnnotation(Bitmap bitmap, string annotations)
     {
-      using (var dc = new DisposableCollection())
+      string[] parts = annotations.Split(new char[]{'\r','\n'}, StringSplitOptions.RemoveEmptyEntries);
+      foreach (var part in parts)
       {
-        // all disposable objects added to dc
-        var dwf = DWriteFactory.CreateFactory().AddTo(dc);
-        var wicf = ImagingFactory.Create().AddTo(dc);
-        var d2df = D2DFactory.CreateFactory(D2DFactoryType.SingleThreaded).AddTo(dc);
-        var bmp = wicf.CreateImagingBitmap(maxDimension, maxDimension, PixelFormats.Bgr32Bpp,
-                                           BitmapCreateCacheOption.CacheOnLoad).AddTo(dc);
-        var rt = d2df.CreateWicBitmapRenderTarget(bmp, new RenderTargetProperties()).AddTo(dc);
-
-        throw new NotReadyYetException();
+        if (part.StartsWith("highlight"))
+        {
+          var elems = part.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries);
+          if (elems.Length == 5)
+          {
+          }
+        }
       }
-
     }
   }
 }

TypograFixImpl/Generator.cs

     /// <param name="markup">The text to render, specified in the form of mark-up.</param>
     /// <param name="index">The index of the freeform text in the document.</param>
     /// <param name="makeFrame"></param>
-    private static string RegenerateFreeformImage(ConversionOptions options, string markup, int index, bool makeFrame)
+    public static string RegenerateFreeformImage(ConversionOptions options, string markup, int index, bool makeFrame)
     {
       string filename = Path.Combine(Path.GetTempPath(), options.FreeformPrefix + index + ".png");
 
       { 'd', typeof(DFormat)}
     };
 
-    private static string CodeFormat(string code, string annotation, char languageMarker, ConversionOptions options)
+    public static string CodeFormat(string code, string annotation, char languageMarker, ConversionOptions options)
     {
       CodeFormat cm;
       if (languageMarker == ' ' || !languageTypes.ContainsKey(languageMarker))

Typografix.Bitmap/TypograFix.CardRendering.cpp

       r = L"common";
 
     // NOTE: 10th edition symbol is a special case!
-
     wstring filename = cardsDirectory + L"Icon\\" + wstring(L"graphic_seticon_") + editionMap[setName] + wstring(L"_") + r + wstring(L".png");
     GetBitmap(renderTarget, wicFactory, filename.c_str(), setBitmap);
   }

Typografix.Bitmap/Typografix.Bitmap.cpp

       Pixel& r2 = *reinterpret_cast<Pixel*>(src + (offset + 2*sizeof(Pixel)));
       Pixel& l1 = *reinterpret_cast<Pixel*>(src + (offset - sizeof(Pixel)));
       Pixel& l2 = *reinterpret_cast<Pixel*>(src + (offset - 2*sizeof(Pixel)));
-      // изменяем d
+      // change d
       d.Blue = 0;
       d.Green = 0;
       d.Red = 0;

Typografix.Bitmap/Typografix.Bitmap.vcxproj

       <EnablePREfast>true</EnablePREfast>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>libiomp5md.lib;d2d1.lib;dwrite.lib;windowscodecs.lib;dxgi.lib;d3d10_1.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>d2d1.lib;dwrite.lib;windowscodecs.lib;dxgi.lib;d3d10_1.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>

installer/TypograFix-cache/cacheIndex.txt

Binary file added.

installer/TypograFix-cache/part1/disk1.cab

Binary file added.

installer/TypograFix-cache/part1/output-info.ini

Binary file added.

installer/TypograFix.aip

+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<DOCUMENT Type="Advanced Installer" CreateVersion="9.4" version="9.4" Modules="architect" RootPath="." Language="en" Id="{76FA2768-E6F6-461E-AFF8-4082EBE1DDD9}">
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
+    <ROW Property="AI_FINDEXE_TITLE" Value="Select the installation package for [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
+    <ROW Property="ALLUSERS" Value="1"/>
+    <ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
+    <ROW Property="ARPCONTACT" Value="http://nesteruk.fogbugz.com"/>
+    <ROW Property="ARPHELPLINK" Value="http://nesteruk.fogbugz.com"/>
+    <ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
+    <ROW Property="ARPPRODUCTICON" Value="TypograFix.exe" Type="8"/>
+    <ROW Property="ARPURLINFOABOUT" Value="https://bitbucket.org/nesteruk/typografix/"/>
+    <ROW Property="ARPURLUPDATEINFO" Value="https://bitbucket.org/nesteruk/typografix/downloads"/>
+    <ROW Property="MSIFASTINSTALL" MultiBuildValue="DefaultBuild:1"/>
+    <ROW Property="Manufacturer" Value="ActiveMesa" ValueLocId="*"/>
+    <ROW Property="ProductCode" Value="1033:{892A8FB6-8ADA-4EC3-82D7-F8EF7D5766D3} " Type="16"/>
+    <ROW Property="ProductLanguage" Value="1033"/>
+    <ROW Property="ProductName" Value="TypograFix" ValueLocId="*"/>
+    <ROW Property="ProductVersion" Value="1.0.0" Type="32"/>
+    <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
+    <ROW Property="UpgradeCode" Value="{53AB6833-FB3B-4B58-BBFA-E9655A1716AF}"/>
+    <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
+    <ROW Property="WindowsType9XDisplay" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
+    <ROW Property="WindowsTypeNT" MultiBuildValue="DefaultBuild:Windows NT/2000/XP/Vista/Windows 7/Windows 8 x86" ValueLocId="-"/>
+    <ROW Property="WindowsTypeNTDisplay" MultiBuildValue="DefaultBuild:Windows NT/2000/XP/Vista/Windows 7/Windows 8 x86" ValueLocId="-"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
+    <ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>
+    <ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
+    <ROW Component="AI_ExePath" ComponentId="{9E82347D-7712-4E90-B1AD-E6DDF128BEEC}" Directory_="APPDIR" Attributes="4" KeyPath="AI_ExePath"/>
+    <ROW Component="Microsoft.Msagl.Drawing.dll" ComponentId="{5A376D57-7D74-4D7F-8087-8DBDC97AD300}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Msagl.Drawing.dll"/>
+    <ROW Component="Microsoft.Msagl.GraphViewerGdi.dll" ComponentId="{D1465746-86BD-4CC5-8536-A00F50B75819}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Msagl.GraphViewerGdi.dll"/>
+    <ROW Component="Microsoft.Msagl.dll" ComponentId="{B51FD8A3-AD4A-4268-938C-682E99765A2A}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Msagl.dll"/>
+    <ROW Component="Microsoft.Practices.ServiceLocation.dll" ComponentId="{0ED259F4-980F-4843-9E12-5752037DA411}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Practices.ServiceLocation.dll"/>
+    <ROW Component="Microsoft.Practices.Unity.Configuration." ComponentId="{928678B8-E391-47DB-8914-56043FEFA3ED}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Practices.Unity.Configuration.dll"/>
+    <ROW Component="Microsoft.Practices.Unity.dll" ComponentId="{7C529984-88F9-4C6D-B5EA-CFFC0C82EAE0}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Practices.Unity.dll"/>
+    <ROW Component="Microsoft.WindowsAPICodePack.DirectX.dll" ComponentId="{60075135-5434-400F-97E5-0739B51B6892}" Directory_="APPDIR" Attributes="256" KeyPath="Microsoft.WindowsAPICodePack.DirectX.dll"/>
+    <ROW Component="ProductInformation" ComponentId="{B5BE2DE2-54D3-4807-8E7B-97F2F6E4F13F}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
+    <ROW Component="ServiceStack.Text.dll" ComponentId="{21AD665E-C8CC-4739-91C4-2F612480E29B}" Directory_="APPDIR" Attributes="0" KeyPath="ServiceStack.Text.dll"/>
+    <ROW Component="SgmlReaderDll.dll" ComponentId="{0975B6AF-23E9-4F46-BE9F-D4DCF472FBCF}" Directory_="APPDIR" Attributes="0" KeyPath="SgmlReaderDll.dll"/>
+    <ROW Component="System.Windows.Controls.WpfPropertyGri_1" ComponentId="{2BA2D0CC-5B0E-4486-A3D2-EF8DE9B92D98}" Directory_="APPDIR" Attributes="0" KeyPath="System.Windows.Controls.WpfPropertyGrid.Themes.dll"/>
+    <ROW Component="System.Windows.Controls.WpfPropertyGrid." ComponentId="{B732BEC3-8BCD-494C-9637-F67185390249}" Directory_="APPDIR" Attributes="0" KeyPath="System.Windows.Controls.WpfPropertyGrid.dll"/>
+    <ROW Component="TypograFix.Common.dll" ComponentId="{08A42134-FA98-4BCC-B76F-7489F39AD113}" Directory_="APPDIR" Attributes="256" KeyPath="TypograFix.Common.dll"/>
+    <ROW Component="TypograFix.Impl.dll" ComponentId="{5463F2E4-D27E-4BD0-AE51-1466FEC38056}" Directory_="APPDIR" Attributes="256" KeyPath="TypograFix.Impl.dll"/>
+    <ROW Component="TypograFix.exe" ComponentId="{434868AF-7782-4E28-880D-FC1BD261C2AC}" Directory_="APPDIR" Attributes="256" KeyPath="TypograFix.exe"/>
+    <ROW Component="TypograFix.exe.manifest" ComponentId="{299AC506-6B72-462A-B42D-B9A3BF7187F7}" Directory_="APPDIR" Attributes="0" KeyPath="TypograFix.exe.manifest" Type="0"/>
+    <ROW Component="Typografix.Bitmap.dll" ComponentId="{CE958D81-0794-4DBB-8C06-F19D0A166ED9}" Directory_="APPDIR" Attributes="256" KeyPath="Typografix.Bitmap.dll"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
+    <ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0" Components="AI_ExePath Microsoft.Msagl.Drawing.dll Microsoft.Msagl.GraphViewerGdi.dll Microsoft.Msagl.dll Microsoft.Practices.ServiceLocation.dll Microsoft.Practices.Unity.Configuration. Microsoft.Practices.Unity.dll Microsoft.WindowsAPICodePack.DirectX.dll ProductInformation ServiceStack.Text.dll SgmlReaderDll.dll System.Windows.Controls.WpfPropertyGri_1 System.Windows.Controls.WpfPropertyGrid. TypograFix.Common.dll TypograFix.Impl.dll TypograFix.exe TypograFix.exe.manifest Typografix.Bitmap.dll"/>
+    <ATTRIBUTE name="CurrentFeature" value="MainFeature"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
+    <ROW File="Microsoft.Msagl.Drawing.dll" Component_="Microsoft.Msagl.Drawing.dll" FileName="Micros~2.dll|Microsoft.Msagl.Drawing.dll" Attributes="0" SourcePath="..\bin\Microsoft.Msagl.Drawing.dll" SelfReg="false" NextFile="Microsoft.Msagl.GraphViewerGdi.dll"/>
+    <ROW File="Microsoft.Msagl.GraphViewerGdi.dll" Component_="Microsoft.Msagl.GraphViewerGdi.dll" FileName="Micros~3.dll|Microsoft.Msagl.GraphViewerGdi.dll" Attributes="0" SourcePath="..\bin\Microsoft.Msagl.GraphViewerGdi.dll" SelfReg="false" NextFile="Microsoft.Practices.ServiceLocation.dll"/>
+    <ROW File="Microsoft.Msagl.dll" Component_="Microsoft.Msagl.dll" FileName="Micros~1.dll|Microsoft.Msagl.dll" Attributes="0" SourcePath="..\bin\Microsoft.Msagl.dll" SelfReg="false" NextFile="Microsoft.Msagl.Drawing.dll"/>
+    <ROW File="Microsoft.Practices.ServiceLocation.dll" Component_="Microsoft.Practices.ServiceLocation.dll" FileName="Micros~4.dll|Microsoft.Practices.ServiceLocation.dll" Attributes="0" SourcePath="..\bin\Microsoft.Practices.ServiceLocation.dll" SelfReg="false" NextFile="Microsoft.Practices.Unity.Configuration.dll"/>
+    <ROW File="Microsoft.Practices.Unity.Configuration.dll" Component_="Microsoft.Practices.Unity.Configuration." FileName="Micros~5.dll|Microsoft.Practices.Unity.Configuration.dll" Attributes="0" SourcePath="..\bin\Microsoft.Practices.Unity.Configuration.dll" SelfReg="false" NextFile="Microsoft.Practices.Unity.dll"/>
+    <ROW File="Microsoft.Practices.Unity.dll" Component_="Microsoft.Practices.Unity.dll" FileName="Micros~6.dll|Microsoft.Practices.Unity.dll" Attributes="0" SourcePath="..\bin\Microsoft.Practices.Unity.dll" SelfReg="false" NextFile="Microsoft.WindowsAPICodePack.DirectX.dll"/>
+    <ROW File="Microsoft.WindowsAPICodePack.DirectX.dll" Component_="Microsoft.WindowsAPICodePack.DirectX.dll" FileName="Micros~7.dll|Microsoft.WindowsAPICodePack.DirectX.dll" Attributes="0" SourcePath="..\bin\Microsoft.WindowsAPICodePack.DirectX.dll" SelfReg="false" NextFile="ServiceStack.Text.dll"/>
+    <ROW File="ServiceStack.Text.dll" Component_="ServiceStack.Text.dll" FileName="Servic~1.dll|ServiceStack.Text.dll" Attributes="0" SourcePath="..\bin\ServiceStack.Text.dll" SelfReg="false" NextFile="SgmlReaderDll.dll"/>
+    <ROW File="SgmlReaderDll.dll" Component_="SgmlReaderDll.dll" FileName="SgmlRe~1.dll|SgmlReaderDll.dll" Attributes="0" SourcePath="..\bin\SgmlReaderDll.dll" SelfReg="false" NextFile="System.Windows.Controls.WpfPropertyGrid.dll"/>
+    <ROW File="System.Windows.Controls.WpfPropertyGrid.Themes.dll" Component_="System.Windows.Controls.WpfPropertyGri_1" FileName="System~2.dll|System.Windows.Controls.WpfPropertyGrid.Themes.dll" Attributes="0" SourcePath="..\bin\System.Windows.Controls.WpfPropertyGrid.Themes.dll" SelfReg="false" NextFile="Typografix.Bitmap.dll"/>
+    <ROW File="System.Windows.Controls.WpfPropertyGrid.dll" Component_="System.Windows.Controls.WpfPropertyGrid." FileName="System~1.dll|System.Windows.Controls.WpfPropertyGrid.dll" Attributes="0" SourcePath="..\bin\System.Windows.Controls.WpfPropertyGrid.dll" SelfReg="false" NextFile="System.Windows.Controls.WpfPropertyGrid.Themes.dll"/>
+    <ROW File="TypograFix.Common.dll" Component_="TypograFix.Common.dll" FileName="Typogr~2.dll|TypograFix.Common.dll" Attributes="0" SourcePath="..\bin\TypograFix.Common.dll" SelfReg="false" NextFile="TypograFix.exe"/>
+    <ROW File="TypograFix.Impl.dll" Component_="TypograFix.Impl.dll" FileName="Typogr~3.dll|TypograFix.Impl.dll" Attributes="0" SourcePath="..\bin\TypograFix.Impl.dll" SelfReg="false" NextFile="TypograFix.exe.config"/>
+    <ROW File="TypograFix.exe" Component_="TypograFix.exe" FileName="Typogr~1.exe|TypograFix.exe" Attributes="0" SourcePath="..\bin\TypograFix.exe" SelfReg="false" NextFile="TypograFix.exe.manifest"/>
+    <ROW File="TypograFix.exe.config" Component_="TypograFix.exe.manifest" FileName="Typogr~1.con|TypograFix.exe.config" Attributes="0" SourcePath="..\bin\TypograFix.exe.config" SelfReg="false"/>
+    <ROW File="TypograFix.exe.manifest" Component_="TypograFix.exe.manifest" FileName="Typogr~1.man|TypograFix.exe.manifest" Attributes="0" SourcePath="..\bin\TypograFix.exe.manifest" SelfReg="false" NextFile="TypograFix.Impl.dll"/>
+    <ROW File="Typografix.Bitmap.dll" Component_="Typografix.Bitmap.dll" FileName="Typogr~1.dll|Typografix.Bitmap.dll" Attributes="0" SourcePath="..\bin\Typografix.Bitmap.dll" SelfReg="false" NextFile="TypograFix.Common.dll"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
+    <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="1" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" UseLargeSchema="true" MsiPackageType="x64"/>
+    <ATTRIBUTE name="CurrentBuild" value="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
+    <ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
+    <ROW Path="&lt;AI_DICTS&gt;ui_en.ail"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
+    <ROW Fragment="CommonUI.aip" Path="&lt;AI_FRAGS&gt;CommonUI.aip"/>
+    <ROW Fragment="FolderDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\FolderDlg.aip"/>
+    <ROW Fragment="MaintenanceTypeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\MaintenanceTypeDlg.aip"/>
+    <ROW Fragment="MaintenanceWelcomeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\MaintenanceWelcomeDlg.aip"/>
+    <ROW Fragment="SequenceDialogs.aip" Path="&lt;AI_THEMES&gt;classic\fragments\SequenceDialogs.aip"/>
+    <ROW Fragment="Sequences.aip" Path="&lt;AI_FRAGS&gt;Sequences.aip"/>
+    <ROW Fragment="StaticUIStrings.aip" Path="&lt;AI_FRAGS&gt;StaticUIStrings.aip"/>
+    <ROW Fragment="UI.aip" Path="&lt;AI_THEMES&gt;classic\fragments\UI.aip"/>
+    <ROW Fragment="Validation.aip" Path="&lt;AI_FRAGS&gt;Validation.aip"/>
+    <ROW Fragment="VerifyRemoveDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\VerifyRemoveDlg.aip"/>
+    <ROW Fragment="VerifyRepairDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\VerifyRepairDlg.aip"/>
+    <ROW Fragment="WelcomeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\WelcomeDlg.aip"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiActionTextComponent">
+    <ROW Action="AI_DeleteLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
+    <ROW Action="AI_DeleteRLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
+    <ROW Action="AI_ExtractLzma" Description="Extracting files from archive" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiAppSearchComponent">
+    <ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_CU" Builds="DefaultBuild"/>
+    <ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_LM" Builds="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
+    <ROW Name="Prereq.dll" SourcePath="&lt;AI_CUSTACTS&gt;Prereq.dll"/>
+    <ROW Name="aicustact.dll" SourcePath="&lt;AI_CUSTACTS&gt;aicustact.dll"/>
+    <ROW Name="lzmaextractor.dll" SourcePath="&lt;AI_CUSTACTS&gt;lzmaextractor.dll"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
+    <ATTRIBUTE name="FixedSizeBitmaps" value="2"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
+    <ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="197"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="201"/>
+    <ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL" Ordering="201"/>
+    <ROW Dialog_="FolderDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
+    <ROW Dialog_="MaintenanceWelcomeDlg" Control_="Next" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="99"/>
+    <ROW Dialog_="CustomizeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_MAINT" Ordering="101"/>
+    <ROW Dialog_="CustomizeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="1"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_MAINT" Ordering="198"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="202"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="ChangeButton" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="501"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceWelcomeDlg" Condition="AI_MAINT" Ordering="1"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="RemoveButton" Event="NewDialog" Argument="VerifyRemoveDlg" Condition="AI_MAINT AND InstallMode=&quot;Remove&quot;" Ordering="601"/>
+    <ROW Dialog_="VerifyRemoveDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode=&quot;Remove&quot;" Ordering="1"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="RepairButton" Event="NewDialog" Argument="VerifyRepairDlg" Condition="AI_MAINT AND InstallMode=&quot;Repair&quot;" Ordering="601"/>
+    <ROW Dialog_="VerifyRepairDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode=&quot;Repair&quot;" Ordering="1"/>
+    <ROW Dialog_="VerifyRepairDlg" Control_="Repair" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode=&quot;Repair&quot;" Ordering="399"/>
+    <ROW Dialog_="VerifyRemoveDlg" Control_="Remove" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode=&quot;Remove&quot;" Ordering="299"/>
+    <ROW Dialog_="PatchWelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_PATCH" Ordering="201"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_PATCH" Ordering="199"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="PatchWelcomeDlg" Condition="AI_PATCH" Ordering="203"/>
+    <ROW Dialog_="ResumeDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_RESUME" Ordering="299"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
+    <ROW Action="AI_AppSearchEx" Type="1" Source="Prereq.dll" Target="DoAppSearchEx"/>
+    <ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
+    <ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>
+    <ROW Action="AI_DeleteCadLzma" Type="51" Source="AI_DeleteLzma" Target="[AI_SETUPEXEPATH]"/>
+    <ROW Action="AI_DeleteLzma" Type="1025" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
+    <ROW Action="AI_DeleteRCadLzma" Type="51" Source="AI_DeleteRLzma" Target="[AI_SETUPEXEPATH]"/>
+    <ROW Action="AI_DeleteRLzma" Type="1281" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
+    <ROW Action="AI_ExtractCadLzma" Type="51" Source="AI_ExtractLzma" Target="[AI_SETUPEXEPATH]"/>
+    <ROW Action="AI_ExtractLzma" Type="1025" Source="lzmaextractor.dll" Target="ExtractLZMAFiles"/>
+    <ROW Action="AI_FindExeLzma" Type="1" Source="lzmaextractor.dll" Target="FindEXE"/>
+    <ROW Action="AI_InstallModeCheck" Type="1" Source="aicustact.dll" Target="UpdateInstallMode" WithoutSeq="true"/>
+    <ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>
+    <ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH" Target="[AI_SETUPEXEPATH_ORIGINAL]"/>
+    <ROW Action="AI_RESTORE_LOCATION" Type="65" Source="aicustact.dll" Target="RestoreLocation"/>
+    <ROW Action="AI_ResolveKnownFolders" Type="1" Source="aicustact.dll" Target="AI_ResolveKnownFolders"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Type="1" Source="aicustact.dll" Target="GetLocalizedCredentials"/>
+    <ROW Action="AI_SHOW_LOG" Type="65" Source="aicustact.dll" Target="LaunchLogFile" WithoutSeq="true"/>
+    <ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>
+    <ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFiles64Folder][Manufacturer]\[ProductName]"/>
+    <ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
+    <ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
+    <ROW Name="TypograFix.exe" SourcePath="TypograFix.ico" Index="0"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
+    <ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel &lt;&gt; 5)" Sequence="210"/>
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="746"/>
+    <ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1501"/>
+    <ROW Action="AI_PREPARE_UPGRADE" Condition="AI_UPGRADE=&quot;No&quot; AND (Not Installed)" Sequence="1399"/>
+    <ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Sequence="51"/>
+    <ROW Action="AI_AppSearchEx" Sequence="102"/>
+    <ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99" Builds="DefaultBuild"/>
+    <ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="101" Builds="DefaultBuild"/>
+    <ROW Action="AI_DeleteCadLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="199" Builds="DefaultBuild"/>
+    <ROW Action="AI_DeleteRCadLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="198" Builds="DefaultBuild"/>
+    <ROW Action="AI_ExtractCadLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="197" Builds="DefaultBuild"/>
+    <ROW Action="AI_FindExeLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="196" Builds="DefaultBuild"/>
+    <ROW Action="AI_ExtractLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="1549" Builds="DefaultBuild"/>
+    <ROW Action="AI_DeleteRLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="1548" Builds="DefaultBuild"/>
+    <ROW Action="AI_DeleteLzma" Condition="SETUPEXEDIR=&quot;&quot; AND Installed AND (REMOVE&lt;&gt;&quot;ALL&quot;) AND (NOT PATCH)" Sequence="6599" Builds="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="746"/>
+    <ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Sequence="51"/>
+    <ROW Action="AI_AppSearchEx" Sequence="102"/>
+    <ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99"/>
+    <ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="101"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
+    <ROW Condition="( Version9X OR VersionNT64 )" Description="[ProductName] cannot be installed on [WindowsTypeNTDisplay]" DescriptionLocId="AI.LaunchCondition.NoNT" IsPredefined="true" Builds="DefaultBuild"/>
+    <ROW Condition="VersionNT" Description="[ProductName] cannot be installed on [WindowsType9XDisplay]" DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiRegLocatorComponent">
+    <ROW Signature_="AI_EXE_PATH_CU" Root="1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
+    <ROW Signature_="AI_EXE_PATH_LM" Root="2" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
+    <ROW Registry="AI_ExePath" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Value="[AI_SETUPEXEPATH]" Component_="AI_ExePath"/>
+    <ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
+    <ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiThemeComponent">
+    <ATTRIBUTE name="UsedTheme" value="classic"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiUpgradeComponent">
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMax="[|ProductVersion]" Attributes="1025" ActionProperty="OLDPRODUCTS"/>
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.PreReqComponent">
+    <ROW PrereqKey="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD" DisplayName=".NET Framework 4.0" VersionMin="4.0" SetupFileUrl="http://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe" Location="1" ExactSize="0" Win9xVersions="Windows 9x/ME" WinNTVersions="Windows NT 4.0, Windows NT 4.0 Service Pack 1, Windows NT 4.0 Service Pack 2, Windows NT 4.0 Service Pack 3, Windows NT 4.0 Service Pack 4, Windows NT 4.0 Service Pack 5, Windows NT 4.0 Service Pack 6, Windows 2000, Windows 2000 Service Pack 1, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows 2000 Service Pack 4, Windows XP x86, Windows XP x86 Service Pack 1, Windows XP x86 Service Pack 2" Operator="1"/>
+    <ATTRIBUTE name="PrereqsOrder" value="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.PreReqSearchComponent">
+    <ROW SearchKey="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD_NET_40_SEARCH" Prereq="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Version" VerMin="4.0" Order="1" Property="AI_NET_40_ORIGINAL_PREREQSEARCH_PROP"/>
+    <ROW SearchKey="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD_NET_45_SEARCH" Prereq="D62CCA_449F_4EB4_AA2F_C4376D7FBDAD" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Version" VerMin="4.5" Order="2" Property="AI_NET_40_45_PREREQSEARCH_PROP"/>
+  </COMPONENT>
+</DOCUMENT>

installer/TypograFix.ico

Added
New image