Проблемы с ассоциированием файлов - PullRequest
0 голосов
/ 09 июня 2010

В свойствах моего проекта я иду к публикации, опциям и сопоставлениям файлов и ввожу ".cms", "Файл менеджера контактов", "pqcms" и "1icon.ico", но при публикации и установке он не отображаетсясвязать файлы ... Я хочу иметь возможность дважды щелкнуть файл и открыть программу, но, похоже, он этого не делает.

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

и последний вопрос: что я могу сделать, не повышая привилегии администратора?

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

Вы добавили код, необходимый для того, чтобы пользователь дважды щелкнул файл?

//Get the ActivationArguments from the SetupInformation property of the domain.
string[] activationData =
  AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (activationData != null)
{
    Uri uri = new Uri(activationData[0]);
    string fileNamePassedIn = uri.LocalPath.ToString();
    //now you have the file name and you can handle it 
}
0 голосов
/ 28 июня 2010

Еще одна вещь, о которой следует помнить.Я первоначально преобразовал этот код (предоставленный RobinDotNet) в vb.net.Теперь я преобразовал проект в c # и столкнулся с чем-то интересным.При отладке (и я полагаю, что если вы выбрали, чтобы exe-файл был доступным, а не ссылочным приложением "один раз"), "AppDomain.CurrentDomain.SetupInformation.ActivationArguments" имеет значение null (аргументы активации не были назначены), поэтому я слегка изменил кодперехватить эту ошибку.

            //Get the ActivationArguments from the SetupInformation property of the domain if any are set.
        if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null)
        {
            string[] activationData =
              AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
            if (activationData != null)
            {
                Uri uri = new Uri(activationData[0]);
                string fileNamePassedIn = uri.LocalPath.ToString();
                //now you have the file name and you can handle it 
            }
        }
...