Questa è un'applicazione ClickOnce. In base allo documentation, "Se l'applicazione è stata originariamente fornita con le opzioni della riga di comando quando è stata eseguita per la prima volta, il riavvio riavvierà l'applicazione con le stesse opzioni". Ma non so se questo dovrebbe funzionare o no con le applicazioni ClickOnce. In tal caso, cosa sto sbagliando?Application.Restart non passa argomenti indietro
Ecco il mio codice:
public Form1()
{
InitializeComponent();
textBox1.Text = string.Join(Environment.NewLine, GetCommandLineFile());
}
private static string[] GetCommandLineFile()
{
if (AppDomain.CurrentDomain != null &&
AppDomain.CurrentDomain.SetupInformation != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Any())
{
return AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
}
else return new string[] { };
}
private void button1_Click(object sender, EventArgs e)
{
Application.Restart();
}
ho associato la mia domanda con l'estensione .abc
e quando faccio doppio clic il mio file .abc
, l'applicazione lancerà con il nome del file come unico argomento, ma poi quando ho riavviare (premendo il mio button1
), GetCommandLineFile()
restituirà un array vuoto.
Ho lo stesso problema. Ho bisogno che la mia applicazione si riavvii usando gli stessi argomenti. Basta chiamare Application.Restart() sicuramente * non * passa gli stessi argomenti (almeno non quando si usa ClickOnce). Non riesco a trovare nessun altro modo per fare questo neanche. Il metodo Restart() non ti permette di passare nuovi argomenti e chiamare Process.Start non va bene perché se sei riavviato a causa di un aggiornamento il percorso dell'eseguibile cambia, e non riesco a trovare comunque il percorso del file. appref-ms – Nick
La mia soluzione è scrivere gli argomenti della riga di comando su un file nella directory dei dati prima di aggiornare/riavviare e se nessun argomento della riga di comando viene visualizzato dopo il riavvio controlla se il file degli argomenti esiste. se lo fa carica gli argomenti dal file ed elimina il file. – Nick
Sì, ho finito per fare qualcosa del genere. – Juan