Solicitud de clic una vez¿Alguien tiene la sintaxis necesaria para ejecutar una aplicación de hacer clic una vez? He intentado
Ejecute el programa(Esejecutable ("aplicación de hacer clic una vez" ));
Lo cual pensé que no funcionaría. ¿Hay más opciones?
Re: Aplicación ClickOnceUsando el método rundll32, el parámetro se puede pasar al programa clickonce como se muestra a continuación:
RunProgram(
executable( "rundll32.exe" ),
options( {"dfshim.dll,ShOpenVerbShortcut","PathToShortcut.appref-ms|parameter"} ),
readfunction( "text" )
);
Re: Aplicación ClickOnceEl método rundll32 funciona por sí solo, pero no puedo encontrar una manera de pasar el parámetro al .appref-ms. Finalmente resolví el problema usando lo siguiente:
RunProgram(
executable( "cmd.exe" ),
options(
{"/c",
"\!"PathToShortcut.appref-ms\!"",
"parameter"}
),
readfunction( "text" )
);Agregué comillas dobles a mi PathToShortcut.appref-ms porque tiene espacios.
Re: Aplicación ClickOnceLo descubrí después de hurgar bastante.
web(" haga clic una vez en la aplicación.appref-ms");
Re: Aplicación ClickOnceLo siguiente podría ser útil, fue tomado de:
http://www.brad-smith.info/blog/archives/535
Iniciar aplicaciones ClickOnce
A diferencia de los ejecutables normales, las aplicaciones implementadas mediante ClickOnce se inician mediante un programa previo (que normalmente es manejado por el shell). Esto incluye aplicaciones escritas en Windows Forms, WPF o Silverlight. Los accesos directos a las aplicaciones ClickOnce tienen la extensión .appref-ms (en lugar de .lnk para los accesos directos normales) y el comando de inicio no reconoce estos archivos (como en el ejemplo anterior).
Afortunadamente, se pueden ejecutar utilizando la siguiente sintaxis:
1 | rundll32.exe dfshim.dll,ShOpenVerbShortcut [path to appref-ms file] |
Donde [ruta al archivo appref-ms] es la ruta completa al archivo de acceso directo de ClickOnce. La ruta puede incluir variables de entorno como %USERPROFILE% si, por ejemplo, desea señalar un acceso directo en el escritorio del usuario.
¿Cómo funciona esto?
- El comando rundll32 ejecuta una función en una DLL Win32 como si fuera un archivo ejecutable. Es posible que desee utilizar esto cuando tenga una función que se llama predominantemente desde el código (pero que aún funciona de forma independiente), si desea evitar la creación de muchos ejecutables cuando una sola DLL será suficiente, o para ofuscar deliberadamente un comando que los usuarios no están destinados. para comenzar.
- dfshim.dll es responsable de gran parte de la funcionalidad de ClickOnce; contiene funciones para instalar, eliminar, iniciar y actualizar aplicaciones y se distribuye como parte de .NET Framework.
- El nombre de la función que queremos es ShOpenVerbShortcut , que es la misma función que utiliza el shell de Windows para ejecutar archivos de acceso directo .appref-ms. Simplemente pasas una ruta a la función y ella se encarga del resto.