Как зарегистрировать приложение для запуска при запуске Windows с помощью Squirrel.Windows? - PullRequest
0 голосов
/ 28 октября 2018

Есть ли способ зарегистрировать установленное приложение для запуска при запуске Windows при использовании Squirrel.Windows для сборки установщика?

Спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

Я только что узнал о Настраиваемых событиях белка , и мы можем обработать их, чтобы создать / удалить соответствующий реестр для запуска приложения при запуске Windows.

using Microsoft.Win32;
using Squirrel;
using System.IO;

public static class UpdateManagerExtensions
{
    private static RegistryKey OpenRunAtWindowsStartupRegistryKey() =>
        Registry.CurrentUser.OpenSubKey(
            "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

    public static void CreateRunAtWindowsStartupRegistry(this UpdateManager updateManager)
    {
        using (var startupRegistryKey = OpenRunAtWindowsStartupRegistryKey())
            startupRegistryKey.SetValue(
                updateManager.ApplicationName, 
                Path.Combine(updateManager.RootAppDirectory, $"{updateManager.ApplicationName}.exe"));
    }

    public static void RemoveRunAtWindowsStartupRegistry(this UpdateManager updateManager)
    {
        using (var startupRegistryKey = OpenRunAtWindowsStartupRegistryKey())
            startupRegistryKey.DeleteValue(updateManager.ApplicationName);
    }
}

Вариант использования

string updateUrl = //...

using (var mgr = new UpdateManager(updateUrl)))
{
    SquirrelAwareApp.HandleEvents(
        onInitialInstall: v => 
        {
            mgr.CreateShortcutForThisExe();
            mgr.CreateRunAtWindowsStartupRegistry();
        },
        onAppUninstall: v =>
        {
            mgr.RemoveShortcutForThisExe();
            mgr.RemoveRunAtWindowsStartupRegistry();
        });
}
...