Мое приложение предназначено только для меня и коллег, поэтому мне все равно, является ли это Click-Once или copy-the-exe. Я хочу, чтобы иметь возможность щелкнуть файл с заданным расширением в проводнике Windows и запустить мою программу и открыть этот файл. Я не могу заставить его захватить имя файла.WPF; щелкните один раз; Дважды щелкните файл для запуска; VS 2008
мнимое решение:
код Пытаюсь ниже и в этот момент все, что я пытаюсь сделать, это поставить имя щелкнули файл в текстовом поле. Я подозреваю, что мое соответствующее незнание - это то, как ссылаться на однократное приложение из обозревателя Windows. Когда я создаю, я получаю файл с именем setup.exe, файл Wis.application, и когда я нажимаю «setup» для его установки, я получаю ярлык типа «Ссылка на приложение Click-once» в « C: \ Users \ ptom \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Wis ". Я попытался связать файлы с этим ярлыком, созданным при установке, и связать файлы с setup.exe. Когда я нажимаю на файл, приложение запускается, но указывает, что AppDomain.CurrentDomain.SetupInformation.ActivationArguments - null. (По «указывает» я имею в виду, что текстовое поле заполняется текстом, из которого я тестирую, чтобы определить, является ли оно нулевым). Если я запустил приложение из отладки или просто запустил его из стартового меню, он сделает то, что я ожидаю, следуя пути кода, который указывает, что ActivationArguments не является нулевым, но его значение ActivationData (строка []) имеет длину 0.
Вот код из App.xaml.cs
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace Wis
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// Check if this was launched by double-clicking a doc. If so, use that as the
// startup file name.
if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments == null)
{
this.Properties["DoubleClickedFileToLoad"] = "There were no activation arguments AGAIN";
}
else
{
if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null
&& AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length > 0)
{
this.Properties["DoubleClickedFileToLoad"] =
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
}
else
{
this.Properties["DoubleClickedFileToLoad"] = "Type in a file name";
}
}
}
}
}
Благодаря
Я вставил в ваш код; у вас был объект ApplicationDeployment; Сначала я это вырезал, и это сработало. Мне пришлось добавить ссылку на System.Deployment, чтобы использовать этот первый тест. –