diff options
Diffstat (limited to 'MediaBrowser.ServerApplication')
| -rw-r--r-- | MediaBrowser.ServerApplication/Native/LnkShortcutHandler.cs | 69 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/WindowsAppHost.cs | 24 |
2 files changed, 19 insertions, 74 deletions
diff --git a/MediaBrowser.ServerApplication/Native/LnkShortcutHandler.cs b/MediaBrowser.ServerApplication/Native/LnkShortcutHandler.cs index 91ff7033e..b4a87b9b4 100644 --- a/MediaBrowser.ServerApplication/Native/LnkShortcutHandler.cs +++ b/MediaBrowser.ServerApplication/Native/LnkShortcutHandler.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Runtime.InteropServices; +using System.Runtime.InteropServices.ComTypes; using System.Security; using System.Text; using MediaBrowser.Model.IO; @@ -52,7 +53,7 @@ namespace MediaBrowser.ServerApplication.Native /// <summary> /// The STG m_ READ /// </summary> - public const uint STGM_READ = 0; + public const int STGM_READ = 0; } /// <summary> @@ -319,72 +320,6 @@ namespace MediaBrowser.ServerApplication.Native } - /// <summary> - /// Interface IPersist - /// </summary> - [ComImport, Guid("0000010c-0000-0000-c000-000000000046"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - public interface IPersist - { - /// <summary> - /// Gets the class ID. - /// </summary> - /// <param name="pClassID">The p class ID.</param> - [PreserveSig] - void GetClassID(out Guid pClassID); - } - - /// <summary> - /// Interface IPersistFile - /// </summary> - [ComImport, Guid("0000010b-0000-0000-C000-000000000046"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - public interface IPersistFile : IPersist - { - /// <summary> - /// Gets the class ID. - /// </summary> - /// <param name="pClassID">The p class ID.</param> - new void GetClassID(out Guid pClassID); - /// <summary> - /// Determines whether this instance is dirty. - /// </summary> - [PreserveSig] - int IsDirty(); - - /// <summary> - /// Loads the specified PSZ file name. - /// </summary> - /// <param name="pszFileName">Name of the PSZ file.</param> - /// <param name="dwMode">The dw mode.</param> - [PreserveSig] - void Load([In, MarshalAs(UnmanagedType.LPWStr)] - string pszFileName, uint dwMode); - - /// <summary> - /// Saves the specified PSZ file name. - /// </summary> - /// <param name="pszFileName">Name of the PSZ file.</param> - /// <param name="remember">if set to <c>true</c> [remember].</param> - [PreserveSig] - void Save([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName, - [In, MarshalAs(UnmanagedType.Bool)] bool remember); - - /// <summary> - /// Saves the completed. - /// </summary> - /// <param name="pszFileName">Name of the PSZ file.</param> - [PreserveSig] - void SaveCompleted([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName); - - /// <summary> - /// Gets the cur file. - /// </summary> - /// <param name="ppszFileName">Name of the PPSZ file.</param> - [PreserveSig] - void GetCurFile([In, MarshalAs(UnmanagedType.LPWStr)] string ppszFileName); - } - // CLSID_ShellLink from ShlGuid.h /// <summary> /// Class ShellLink diff --git a/MediaBrowser.ServerApplication/WindowsAppHost.cs b/MediaBrowser.ServerApplication/WindowsAppHost.cs index c2cdb9ab0..ec66923aa 100644 --- a/MediaBrowser.ServerApplication/WindowsAppHost.cs +++ b/MediaBrowser.ServerApplication/WindowsAppHost.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; +using System.Runtime.InteropServices.ComTypes; using Emby.Server.Core; using Emby.Server.Implementations; using Emby.Server.Implementations.EntryPoints; @@ -93,21 +94,30 @@ namespace MediaBrowser.ServerApplication protected override void ConfigureAutoRunInternal(bool autorun) { - var shortcutPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.StartMenu), "Emby", "Emby Server.lnk"); - var startupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup); - if (autorun) + if (autorun && !MainStartup.IsRunningAsService) { //Copy our shortut into the startup folder for this user - var targetPath = Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk"); - FileSystemManager.CreateDirectory(Path.GetDirectoryName(targetPath)); - File.Copy(shortcutPath, targetPath, true); + var targetPath = Path.Combine(startupPath, "Emby Server.lnk"); + + IShellLinkW link = (IShellLinkW)new ShellLink(); + + var appPath = Process.GetCurrentProcess().MainModule.FileName; + + // setup shortcut information + link.SetDescription(Name); + link.SetPath(appPath); + link.SetWorkingDirectory(Path.GetDirectoryName(appPath)); + + // save it + IPersistFile file = (IPersistFile)link; + file.Save(targetPath, true); } else { //Remove our shortcut from the startup folder for this user - FileSystemManager.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk")); + FileSystemManager.DeleteFile(Path.Combine(startupPath, "Emby Server.lnk")); } } |
