Могу ли я создать значок на рабочем столе для приложения ClickOnce?

Я читал в некоторых сообщениях ClickOnce, что ClickOnce не позволяет создавать значок на рабочем столе для вашего приложения. Есть ли способ обойти это?


person Veldmuis    schedule 30.09.2008    source источник


Ответы (5)


В Visual Studio 2005 ClickOnce не имеет возможности создавать значок на рабочем столе, но теперь он доступно в Visual Studio 2008 SP1. В Visual Studio 2005 вы можете использовать следующий код для создания значка на рабочем столе при запуске приложения.

Я использовал этот код в нескольких проектах уже пару месяцев без каких-либо проблем. Я должен сказать, что все мои приложения были развернуты в интрасети в контролируемой среде. Также значок не удаляется при удалении приложения. Этот код создает ярлык для ярлыка в меню «Пуск», созданном ClickOnce.

private void CreateDesktopIcon()
{
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

        if (ad.IsFirstRun)
        {
            Assembly assembly = Assembly.GetEntryAssembly();
            string company = string.Empty;
            string description = string.Empty;

            if (Attribute.IsDefined(assembly, typeof(AssemblyCompanyAttribute)))
            {
                AssemblyCompanyAttribute ascompany =
                  (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(
                    assembly, typeof(AssemblyCompanyAttribute));

                company = ascompany.Company;
            }
            if (Attribute.IsDefined(assembly, typeof(AssemblyDescriptionAttribute)))
            {
                AssemblyDescriptionAttribute asdescription =
                  (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(
                    assembly, typeof(AssemblyDescriptionAttribute));

                description = asdescription.Description;
            }
            if (!string.IsNullOrEmpty(company))
            {
                string desktopPath = string.Empty;
                desktopPath = string.Concat(
                                Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                                "\\",
                                description,
                                ".appref-ms");

                string shortcutName = string.Empty;
                shortcutName = string.Concat(
                                 Environment.GetFolderPath(Environment.SpecialFolder.Programs),
                                 "\\",
                                 company,
                                 "\\",
                                 description,
                                 ".appref-ms");

                System.IO.File.Copy(shortcutName, desktopPath, true);
            }
        }
    }
}
person Timo    schedule 30.09.2008
comment
Если вы копируете код, вы должны хотя бы сослаться на автора: geekswithblogs.net/ murraybgordon / archive / 2006/10/04 / 93203.aspx - person cgreeno; 25.02.2010
comment
Примечание. Для этого требуется: использование System.Deployment.Application; using System.Reflection; Мне также пришлось добавить ссылку на System.Deployment. Спасибо за комментарий Джерри Одома на geekswithblogs.net/murraybgordon/archive/2006/ 10/04 / 93203.aspx для этой информации. - person Jeff; 27.12.2018

Похоже, есть способ разместить значок на рабочем столе в ClickOnce.

  1. При обновлении до Visual Studio 2008 SP 1 на рабочем столе появится значок флажка на странице параметров в разделе публикации окна свойств проекта.
  2. Второй вариант - добавить в приложение код, который копирует ярлык на рабочий стол при первом запуске приложения. См. Сообщение в блоге Как добавить ярлык на рабочий стол в приложение развертывания ClickOnce < / а>.
person FryHard    schedule 30.09.2008
comment
Идеально. Тот же параметр есть в VS2010, если кому-то еще интересно. - person dkarzon; 24.11.2010
comment
VS2015 также: Свойства проекта ›Опубликовать› Параметры ›Манифесты› Создать ярлык на рабочем столе - person kdbanman; 17.08.2015

В Visual Studio 2017 и 2019 вы можете делать следующее:

Перейдите в Project Properties -> Publish -> Manifests и выберите опцию Создать ярлык на рабочем столе.

person Community    schedule 11.04.2019

Значок на рабочем столе может быть ярлыком для файла .application. Установите это как одно из первых действий вашего приложения.

person 1800 INFORMATION    schedule 30.09.2008

Если вы хотите использовать PowerShell, вы можете создать ярлык для файла .bat:

@ECHO OFF
PowerShell -ExecutionPolicy Unrestricted .\script.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B %errorlevel%

который незаметно запускает script.ps1:

$app = "http://your.site/YourApp/YourApp.application";
[Diagnostics.Process]::Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + $app);

которые открывают ваше приложение ClickOnce.

person Krzysztof Gapski    schedule 26.01.2021