点击一次申请有谁知道运行 clickonce 应用程序所需的语法吗?我试过了
运行程序(这是可执行文件(“点击一次应用程序” ));
我认为这是行不通的。还有其他选择吗?
回复:Clickonce应用程序使用 rundll32 方法,可以将参数传递给 clickonce 程序,如下所示:
RunProgram(
executable( "rundll32.exe" ),
options( {"dfshim.dll,ShOpenVerbShortcut","PathToShortcut.appref-ms|parameter"} ),
readfunction( "text" )
);
回复:Clickonce应用程序rundll32 方法本身有效,但我找不到将参数传递给 .appref-ms 的方法。我最终通过使用以下方法解决了该问题:
RunProgram(
executable( "cmd.exe" ),
options(
{"/c",
"\!"PathToShortcut.appref-ms\!"",
"parameter"}
),
readfunction( "text" )
);我将双引号添加到 PathToShortcut.appref-ms 中,因为它有空格。
回复:Clickonce应用程序经过足够的探索后我想通了。
web(" clickonce application.appref-ms");
回复:Clickonce应用程序以下内容可能有用,摘自:
http://www.brad-smith.info/blog/archives/535
启动 ClickOnce 应用程序
与普通可执行文件不同,使用 ClickOnce 部署的应用程序是使用引导程序(通常由 shell 处理)启动的。这包括用 Windows Forms、WPF 或 Silverlight 编写的应用程序。 ClickOnce 应用程序的快捷方式的扩展名为.appref-ms (而不是常规快捷方式的.lnk ),并且启动命令无法识别这些文件(如前面的示例所示)。
值得庆幸的是,它们可以使用以下语法运行:
1 | rundll32.exe dfshim.dll,ShOpenVerbShortcut [path to appref-ms file] |
其中[appref-ms 文件的路径]是 ClickOnce 快捷方式文件的完整路径。例如,如果您想要指向用户桌面上的快捷方式,则路径可能包含环境变量,例如%USERPROFILE% 。
这是如何运作的?
- rundll32命令执行 Win32 DLL 中的函数,就像它是可执行文件一样。当您有一个主要从代码调用的函数(但仍然独立运行)时,如果您想避免在单个 DLL 就足够的情况下创建许多可执行文件,或者故意混淆用户不想要的命令,您可能需要使用此功能开始。
- dfshim.dll负责 ClickOnce 中的大部分功能;它包含安装、删除、启动和更新应用程序的功能,并作为 .NET Framework 的一部分进行分发。
- 我们想要的函数名称是ShOpenVerbShortcut ,它与 Windows shell 用于运行 .appref-ms 快捷方式文件的函数相同。您只需将路径传递给该函数,它就会处理其余的事情。