Развертывание ClickOnce - Ассоциация файлов не регистрируется - PullRequest
9 голосов
/ 27 июня 2011

Итак, вот краткое изложение проблемы:

Резюме:

Я установил fileAssociations моих приложений ClickOnce, однако они не регистрируется , когда я запускаю / обновляю моя программа (как, например, файлы .bvr, которые я пытаюсь связать, не имеют значка, и я не могу дважды щелкнуть их, чтобы запустить приложение) .

Дополнительная информация:

Сначала я попытался перейти в Свойства -> Опубликовать -> Параметры -> Ассоциации файлов и установить там свои ассоциации.После этой неудачной попытки я попытался установить ее непосредственно в app.manifest:

<fileAssociation
xmlns="urn:schemas-microsoft-com:clickonce.v1"
extension=".bvr"
description="Behavior File"
progid="GGS.Behavior"
defaultIcon="bvrico.ico"
/>

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

  1. Я установил его в приложение с полным доверием (в разделе Безопасность -> Включить параметры безопасности ClickOnce -> Это приложение с полным доверием)
  2. Я использую.NET 4.0 и Visual Studio 2010
  3. Включение «автономного» режима

Я также обрабатываю данные, передаваемые через AppDomain, но сомневаюсь, что это действительно что-то меняет.

Мне было интересно, может быть, ассоциации файлов устанавливаются только при установке.

В любом случае, я был бы очень признателен за понимание этой проблемы.Мне бы очень хотелось, чтобы в моем проекте были ассоциации файлов.

Спасибо всем заранее.

PS: протестировано на Windows XP и Windows 7.

Редактировать: Я также опубликовал этов Microsoft, кстати.

http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/d610cd55-f3c7-4775-a417-251261832200

Если кто-то также хотел бы опубликовать ответ там.Я действительно не могу понять это.: D

Ответы [ 5 ]

6 голосов
/ 11 сентября 2015

Если тип файла, который вы пытаетесь зарегистрировать, ранее был зарегистрирован в другой программе (например, в блокноте) или даже открыт в блокноте, то единственный способ, с помощью которого я нашел его, - это удалить из реестра тип файла в 2 локации, а затем перезагрузите компьютер. После этого опубликуйте обновление для вашего приложения, и если проблема такого рода, то вы в хорошей форме.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .bvr

HKEY_CLASSES_ROOT \ .bvr

Reboot

Публикация обновления для вашего приложения.

1 голос
/ 22 февраля 2012

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

У меня была та же проблема, что и у вас, но я заметил, что эта странная опция появляется после установки моего приложения.После стольких попыток и поиска в Google я попробовал простую вещь - согласился сделать эту библиотеку поддержки развертывания приложений Clickonce по умолчанию для желаемого типа файла.И та да!Значок файла превратился в значок моего приложения, и он запустил мое приложение.Я думаю, дело в том, что мой нужный тип файла уже был связан с Notepad , поэтому ClickOnce отказался переопределить этот параметр.

0 голосов
/ 03 ноября 2017

Я считаю пост Алана выше наиболее полезным. Это сработало так, как было написано для меня на одном из моих компьютеров, но на другом мне это не совсем помогло. Я надеялся просто добавить комментарий к его сообщению, но Stack Overflow говорит, что у меня нет очков репутации за это.

Если вам это нужно, надеюсь, вы все равно найдете его здесь.

Мне также пришлось удалить ключ, подобный следующему, для каждого сопоставления расширения:

HKEY_CLASSES_ROOT\AppName.FileType.0

Добавление этого к удалению Адамом других ключей .ext устранило проблему на моем другом компьютере.

0 голосов
/ 24 июля 2014

Это произошло, когда мы увеличили номер версии и опубликовали приложение в другой подпапке. Например

  • Версия 1.0 была опубликована для \\server\product\version 1.0\
  • Версия 2.0 была опубликована для \\server\product\version 2.0\

Я последовал за ответом @EvAlex, и мне было предложено диалоговое окно, и я нажал кнопку «Подробности», которая открыла файл журнала. В файле журнала я заметил, что программа пыталась скачать по пути старой версии, который она искала до сих пор \\server\product\version 1.0\.

Тогда я понял, что это должно быть что-то в реестре.

Я открыл regedit и выполнил поиск product (это название моего продукта), и нашел путь, на который жаловалась ошибка журнала, под несколькими клавишами, такими как:

  • HKEY_CURRENT_USER \ Software \ Classes.myext
  • HKEY_CURRENT_USER \ Software \ Classes \ MyProgId
  • HKEY_CLASSES_ROOT \ MyProgId

Я удалил эти клавиши и повторил действие Open With, иконка вернулась, а затем она заработала, как талисман.

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

0 голосов
/ 27 июня 2011

ClickOnce не передает аргументы командной строки обычным способом, а через

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

Так что при запуске вашего приложения вам нужно будет проверить, поддерживает ли оно какие-либо строки, и соответственно изменить поведение при запуске..

Это происходит потому, что приложения ClickOnce запускаются через манифест развертывания на сервере, а не через .exe.Кстати: настройка сопоставления файлов через Свойства -> Опубликовать -> Параметры -> Связи файлов должна работать нормально.

Редактировать: (как я создал мое приложение-образец)

  • создание приложения для форм Windows
  • активация настроек безопасности ClickOnce, выбор полностью доверенного приложения
  • в параметрах ClickOnce -> описания, установка издателя, набора и названия продукта
  • в опциях ClickOnce -> ассоциации файлов добавить новое расширение
  • опубликовать приложение, установить приложение, проверить, запускается ли оно при открытии файла (оно работает)

Все настройкине упомянуто, не было затронуто ... это все, что я сделал!

Похоже, это именно то, что вы сделали - возможно, попробуйте создать простое тестовое приложение и посмотрите, подходит ли оно вам.Поскольку этот ответ на самом деле не отвечает на ваш вопрос, пожалуйста, дайте мне знать, когда вы закончите, чтобы я мог удалить его.

...