Использование ClickOnce exe в качестве внешнего инструмента Visual Studio - PullRequest
0 голосов
/ 07 октября 2011

У меня есть встроенный исполняемый файл командной строки, который публикуется в сети через ClickOnce. Основное использование этого инструмента через Visual Studio в качестве внешнего инструмента. Когда я настраиваю это в Visual Studio, я могу установить путь к ярлыку под перемещаемыми данными для моего профиля.

Однако Visual Studio разрешает это путем, например: C: \ Users \ ME \ AppData \ Local \ Apps \ 2.0 \ CGR50YPV.W5E \ RXBXM176.HH8 \ crea..tion_f423fce0316e1dfa_0001.0000_adecafbe6c6acba3 \ MyAppp.exe

Так что же происходит, если я запускаю exe и получаю новую версию, Visual Studio по-прежнему указывает на старую версию (как указано выше). Я могу исправить это, переставив значение команды моего внешнего инструмента на ярлык моего exe, но это немного неприятно.

Как я могу заставить эту работу работать без необходимости каждый раз обновлять мой командный путь?

1 Ответ

1 голос
/ 18 октября 2011

Вы не должны обращаться к приложению ClickOnce через exe-файл. Если вы собираетесь это сделать, просто скопируйте папку \ bin приложения на другой компьютер. Если вы хотите использовать функции обновления, вы всегда должны вызывать приложение ClickOnce, используя ярлык или ссылку на манифест развертывания на веб-сервере. (Манифест развертывания - это файл приложения). Вы можете сделать process.start по этой ссылке.

[редактировать - добавить новую информацию] Ооооо, так вы получаете доступ к ярлыку в папке под профилем пользователя? Я получаю это? Вместо того, чтобы искать это, вы можете указать на ярлык в меню «Пуск»? Он будет добавлен один автоматически, когда пользователь устанавливает приложение, если приложение онлайн / офлайн. Ярлык добавляется в меню «Пуск» в расположение издательства / названия продукта с помощью этих полей в диалоговом окне «Параметры».

Я делаю это, устанавливая информацию о сборке на те же значения и извлекая информацию о сборке программным способом. Я всегда устанавливаю, что описание сборки совпадает с названием продукта, а сборочная компания совпадает с издательской компанией. Тогда я могу сделать это:

Assembly code = Assembly.GetExecutingAssembly();
string company = string.Empty;
string description = string.Empty;
if (Attribute.IsDefined(code, typeof(AssemblyCompanyAttribute)))
{
        AssemblyCompanyAttribute ascompany =
          (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(code, 
       typeof(AssemblyCompanyAttribute));
    company = ascompany.Company;
}
if (Attribute.IsDefined(code, typeof(AssemblyDescriptionAttribute)))
{
    AssemblyDescriptionAttribute asdescription =
    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(code, 
    typeof(AssemblyDescriptionAttribute));
    description = asdescription.Description;
}
if (company != string.Empty && description != string.Empty)
{
    string shortcutName = 
      string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
        \", company, "\\", description, ".appref-ms");
}

(Извините, я не могу понять, как сделать код более красивым и правильно отобразить отступы, но вы поняли идею.)

...