private void InstallShortcut(String shortcutPath, String exePath) { IShellLinkW newShortcut = (IShellLinkW) new CShellLink(); // Create a shortcut to the exe newShortcut.SetPath(exePath); // Open the shortcut property store, set the AppUserModelId property IPropertyStore newShortcutProperties = (IPropertyStore)newShortcut; PropVariantHelper varAppId = new PropVariantHelper(); varAppId.SetValue(APP_ID); newShortcutProperties.SetValue(PROPERTYKEY.AppUserModel_ID, varAppId.Propvariant); PropVariantHelper varToastId = new PropVariantHelper(); varToastId.VarType = VarEnum.VT_CLSID; varToastId.SetValue(typeof(NotificationActivator).GUID); newShortcutProperties.SetValue(PROPERTYKEY.AppUserModel_ToastActivatorCLSID, varToastId.Propvariant); // Commit the shortcut to disk ShellHelpers.IPersistFile newShortcutSave = (ShellHelpers.IPersistFile)newShortcut; newShortcutSave.Save(shortcutPath, true); }
public static void InstallShortcut(string APP_ID, string shortcutPath) { // Find the path to the current executable string exePath = Process.GetCurrentProcess().MainModule.FileName; ShellHelpers.IShellLinkW newShortcut = (ShellHelpers.IShellLinkW) new ShellHelpers.CShellLink(); // Create a shortcut to the exe ShellHelpers.ErrorHelper.VerifySucceeded(newShortcut.SetPath(exePath)); ShellHelpers.ErrorHelper.VerifySucceeded(newShortcut.SetArguments("")); // Open the shortcut property store, set the AppUserModelId property ShellHelpers.IPropertyStore newShortcutProperties = (ShellHelpers.IPropertyStore)newShortcut; using (PropVariant appId = new PropVariant(APP_ID)) { ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutProperties.SetValue(SystemProperties.System.AppUserModel.ID, appId)); ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutProperties.Commit()); } // Commit the shortcut to disk ShellHelpers.IPersistFile newShortcutSave = (ShellHelpers.IPersistFile)newShortcut; ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutSave.Save(shortcutPath, true)); }