124 lines
3.4 KiB
C#
124 lines
3.4 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Installer
|
|
{
|
|
internal static class Shortcut
|
|
{
|
|
private static readonly Type MType = Type.GetTypeFromProgID("WScript.Shell");
|
|
private static readonly object MShell = Activator.CreateInstance(MType);
|
|
|
|
public static void Make(string target, string fileName)
|
|
{
|
|
IWshShortcut shortcut = (IWshShortcut) MType.InvokeMember("CreateShortcut", BindingFlags.InvokeMethod,
|
|
null, MShell, new object[] {fileName});
|
|
shortcut.TargetPath = target;
|
|
shortcut.Save();
|
|
}
|
|
|
|
[ComImport]
|
|
[TypeLibType(0x1040)]
|
|
[Guid("F935DC23-1CF0-11D0-ADB9-00C04FD58A0B")]
|
|
private interface IWshShortcut
|
|
{
|
|
[DispId(0)]
|
|
string FullName
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0)]
|
|
get;
|
|
}
|
|
|
|
[DispId(0x3e8)]
|
|
string Arguments
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3e8)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3e8)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3e9)]
|
|
string Description
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3e9)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3e9)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3ea)]
|
|
string Hotkey
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ea)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ea)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3eb)]
|
|
string IconLocation
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3eb)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3eb)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3ec)]
|
|
string RelativePath
|
|
{
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ec)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3ed)]
|
|
string TargetPath
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ed)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ed)]
|
|
set;
|
|
}
|
|
|
|
[DispId(0x3ee)] int WindowStyle { [DispId(0x3ee)] get; [param: In] [DispId(0x3ee)] set; }
|
|
|
|
[DispId(0x3ef)]
|
|
string WorkingDirectory
|
|
{
|
|
[return: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ef)]
|
|
get;
|
|
[param: In]
|
|
[param: MarshalAs(UnmanagedType.BStr)]
|
|
[DispId(0x3ef)]
|
|
set;
|
|
}
|
|
|
|
[TypeLibFunc(0x40)]
|
|
[DispId(0x7d0)]
|
|
void Load([In] [MarshalAs(UnmanagedType.BStr)] string pathLink);
|
|
|
|
[DispId(0x7d1)]
|
|
void Save();
|
|
}
|
|
}
|
|
} |