Squirrel.windows создает мульти ярлык на рабочем столе

Мы пытаемся создать установщик, используя Squirrel.Windows для нашего приложения.NET Приложение содержит несколько файлов.exe. Мы используем команду:

squirrel --releasify BIN_PATH\MyApp.2.0.33404.nupkg

Тем не менее, при запуске setup.exe, он создает несколько ярлыков на рабочих столах, соответствующих файлам multi .exe. Как указать создание только одного ярлыка?

1 ответ

Решение

Документация Squirrel гласит, что создание ярлыка для каждого EXE-файла в вашем пакете является поведением по умолчанию.

На той же странице документации объясняется, что для переопределения поведения по умолчанию вам необходимо настроить хотя бы одну из ваших EXE-белок, а затем реализовать обработчики событий Squirrel, как вы хотите.

Лучше сделать тот EXE-файл, который вы хотите, чтобы ярлык для Squirrel знал, добавив следующее к его AssemblyInfo.cs:

[assembly: AssemblyMetadata("SquirrelAwareVersion", "1")]

Затем в вашем EXE-файле реализуйте такие события Squirrel:

static bool ShowTheWelcomeWizard;
...
static int Main(string[] args) 
{
    // NB: Note here that HandleEvents is being called as early in startup
    // as possible in the app. This is very important! Do _not_ call this
    // method as part of your app's "check for updates" code.

    using (var mgr = new UpdateManager(updateUrl))
    {
        // Note, in most of these scenarios, the app exits after this method
        // completes!
        SquirrelAwareApp.HandleEvents(
          onInitialInstall: v => mgr.CreateShortcutForThisExe(),
          onAppUpdate: v => mgr.CreateShortcutForThisExe(),
          onAppUninstall: v => mgr.RemoveShortcutForThisExe(),
          onFirstRun: () => ShowTheWelcomeWizard = true);
    }
}
Другие вопросы по тегам