Связать расширение файла с приложением WPF - PullRequest
3 голосов
/ 20 января 2010

У меня есть симпатичный маленький органайзер назначений, к которому я хочу добавить опцию резервного копирования.Но я не хочу его в обычном XML-файле или в другом файле из-за возможности повреждения файла.Итак, как я могу сделать расширение файла, которое программа знает и может сохранить и открыть с расширением файла .asog?

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Попробуйте это:
Как Vista создает значок для документов, связанных с моим приложением?

Принятый ответ объясняет значки и ассоциации файлов.

Неважно, что ваше приложение использует WPF. Файловым ассоциациям все равно, какой графический интерфейс использует ваше приложение.

3 голосов
/ 18 ноября 2014

Если вы хотите связать файл с расширением (.magi) с вашим приложением WPF, я советую вам использовать InnoSetup для этого.

Например, я разработал приложение WPF под названием MAGI. Мы связываем значок с файлом « .magi», и когда пользователь щелкает файл « .magi», он запускает приложение и открывает его непосредственно в приложении.

Open file extension in Wpf application


Используйте InnoSetup для легкого изменения реестра

Просто добавьте эту инструкцию в ваш файл:

[Setup]
ChangesAssociations=yes

[Registry]
Root: HKCR; Subkey: ".magi"; ValueType: string; ValueName: ""; ValueData: "MyMAGIApplication"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "MyMAGIApplication"; ValueType: string; ValueName: ""; ValueData: "Program MAGI"; Flags: uninsdeletekey
Root: HKCR; Subkey: "MyMAGIApplication\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MAGI.EXE,0"
Root: HKCR; Subkey: "MyMAGIApplication\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\MAGI.EXE"" ""%1"""

Разобрать аргументы в методе "Запуск"

Мы используем свойство Startup в основном Xaml, чтобы вызывать ваш синтаксический анализатор как полезный метод main.

<Application x:Class="MAGI.View.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         Startup="AppStartupMainMagi" >
</Application>

И в коде позади мы добавляем этот метод

/// <summary>
/// Call with Startup property in App.xaml
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AppStartupMainMAGI(object sender, StartupEventArgs e)
{
    String[] arguments = Environment.GetCommandLineArgs();

    if (arguments.GetLength(0) > 1)
    {
        if (arguments[1].EndsWith(".magi"))
        {
            string filePathFormMainArgs = arguments[1];
            if(isFileMagiValid(filePathFormMainArgs)) 
            {
                // Step 1 : deserialize filePathFormMainArgs
                // Step 2 : call the view "File oepn" in the application"
            }
        }
    }
    else {
        // Call the view "welcome page application"
    }
}
1 голос
/ 20 января 2010

Вы можете добавить расширение файла с помощью проекта установки или установки ClickOnce. После настройки пользователь может дважды щелкнуть файл .asog, и ваше приложение будет вызываться с именем файла в качестве первой записи в массиве аргументов main.

...