Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Here is a solution that involves an MSI custom action. I have written in using C#, but any other language capable of calling a DLL can be user. Here is a tutorial link for C#: <a href="http://msdn.microsoft.com/en-us/library/d9k65z2d.aspx" rel="nofollow">Walkthrough: Creating a Custom Action</a></p> <pre><code>using System; using System.Collections; using System.ComponentModel; using System.Configuration.Install; using System.IO; using System.Runtime.InteropServices; namespace InstallType1Font { [RunInstaller(true)] public partial class Installer1 : Installer { public Installer1() { InitializeComponent(); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Install(IDictionary stateSaver) { base.Install(stateSaver); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Commit(IDictionary savedState) { base.Commit(savedState); // here, you'll have to determine the proper path string path = @"c:\Windows\Fonts\MyFont.pfm"; if (File.Exists(path)) { InstallFontFile(IntPtr.Zero, path, 0); } } [DllImport("fontext.dll", CharSet = CharSet.Auto)] private static extern void InstallFontFile(IntPtr hwnd, string filePath, int flags); [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Rollback(IDictionary savedState) { base.Rollback(savedState); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Uninstall(IDictionary savedState) { base.Uninstall(savedState); } } } </code></pre> <p>As far as I know, <code>InstallFontFile</code> is undocumented, but allows to install the font permanently. Use this at your own risk.</p> <p>Note: you still need to modify the .MSI to ensure the Fonts file have a FontTitle as described in the link you gave.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload