2017-02-07 22 views
0

Я пытаюсь сделать ассоциацию файлов между приложением, установленным с clickonce, и файлами с заданным расширением. Я использую Параметры публикации - Ассоциированные файлы из свойств проекта, чтобы связать файлы следующим образом:Значок не показан после ассоциации файлов с clickonce в OpenFileDialog

Publish Options

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

Теперь я пытаюсь открыть файлы с Open опции внутри приложения, так что я сделал простой вызов ShowDialog() метода на OpenFileDialog объекта следующим образом:

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.Filter = "test files|*.test1"; 
openFileDialog1.Title = "Select a test file"; 

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
{ 

} 

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

File shown in dialog box

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

File in Windows Explorer

Примечание: Я просто понял, что если я смотреть один и тот же файл с Open вариант из Paint, значок файла отображается правильно, но то же самое открытое с Microsoft Excel ведет себя так же, как и мои приложение, не показывающее значок файла, поэтому я начинаю задаваться вопросом, может ли это быть ошибкой. Любые советы приветствуются!

+1

Грубое предположение, что он работает нормально для 64-битного процесса (например, Explorer и Paint), но 32-разрядный процесс извлекает устаревший значок из кеша. Этот кеш никогда не бывает проблемой, google «сбросить кеш-память оболочки» для подсказок. И убедитесь, что он работает отлично на другой машине. –

+0

Спасибо @HansPassant за отзыв! Я только что получил эту проблему, которую мне нужно исправить, и она воспроизводится на других двух разных машинах точно так же. – meJustAndrew

+0

@ HansPassant еще раз спасибо, мне удалось решить проблему, вы можете проверить мой ответ, и если у вас есть какие-либо предложения, я буду признателен. Также знаете ли вы, что можно создавать ассоциации файлов с установщиком clickonce для архитектуры x86 и x64 одновременно? Спасибо! – meJustAndrew

ответ

1

Как указал Ханс Пассант, между битовой архитектурой процесса, работающим с , была обнаружена несоответствие и архитектура, на которой была создана ассоциация файлов.

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

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

+0

В моем случае значки не отображаются ни при каких обстоятельствах. И ваше исправление не решает мою проблему. – Franck