Esta es una aplicación ClickOnce. De acuerdo con documentation, "Si su aplicación se suministró originalmente opciones de línea de comandos cuando se ejecutó por primera vez, el reinicio abrirá la aplicación nuevamente con las mismas opciones.". Pero no sé si se supone que esto funciona o no con las aplicaciones ClickOnce. Si es así, ¿qué estoy haciendo mal?Application.Restart no pasa argumentos atrás
Aquí está mi código:
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();
}
asocié mi aplicación con la extensión .abc
y cuando hago doble clic mi archivo .abc
, la aplicación se iniciará con el nombre de archivo que el único argumento, pero luego, cuando me reinicie (al presionar my button1
), GetCommandLineFile()
devolverá una matriz vacía.
Estoy teniendo el mismo problema. Necesito que mi aplicación se reinicie usando los mismos argumentos. Simplemente llamando a Application.Restart() definitivamente * no * pasa los mismos argumentos (al menos no cuando se usa ClickOnce). No puedo encontrar ninguna otra forma de hacer esto tampoco. El método Restart() no le permite pasar nuevos argumentos y llamar a Process.Start no sirve porque si se reinicia debido a una actualización, la ruta del ejecutable cambiará, y no puedo encontrar de todos modos para obtener la ruta del. appref-ms – Nick
Mi solución consiste en escribir los argumentos de la línea de comando en un archivo el directorio de datos antes de actualizar/reiniciar y si no aparece ningún argumento de línea de comando después del reinicio, comprueba si el archivo de argumentos existe. si lo hace, carga los argumentos del archivo y elimina el archivo. – Nick
Sí, terminé haciendo algo como esto. – Juan