从任务计划程序调用 ClickOnce 应用程序

Posted

技术标签:

【中文标题】从任务计划程序调用 ClickOnce 应用程序【英文标题】:Calling ClickOnce App From Task Scheduler 【发布时间】:2012-12-12 07:21:01 【问题描述】:

我有一个通过 ClickOnce (VS 2012) 部署到文件共享的 Windows 应用程序。它被配置为在线应用程序(未安装在客户端上)。我只需指向文件共享并双击文件即可通过客户端运行此应用程序。我遇到的问题是将其作为计划任务在客户端上运行(客户端实际上是服务器,Windows Server 2008)。但是,如果我创建了一个调用 ClickOnce 应用程序的批处理文件,则任务计划程序可以成功调用该批处理文件。但我宁愿不必处理创建该批处理文件的额外步骤。

我从任务计划程序得到的错误是: 任务计划程序未能在任务“\TaskName”的实例“d5cc956f-c09e-41dc-a04d-a4276f38704e”中启动操作“\pathToClickOnceApp”。附加数据:错误值:2147942403。

【问题讨论】:

【参考方案1】:

以下是创建可调用 clickonce 应用的任务的示例代码:

  using (TaskService ts = new TaskService())
            
                // Create a new task definition and assign properties
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = "runs clickonce app every 10 minutes";

                var trigger = new TimeTrigger();
                trigger.Repetition.Interval = TimeSpan.FromMinutes(10);         
                // Create a trigger that will fire the task at this time every other day

                td.Triggers.Add(trigger);

                // Create an action that will launch the clickonce app
                td.Actions.Add(new ExecAction("rundll32.exe", @"dfshim.dll,ShOpenVerbApplication your_clickonce_app_url/clickonce_appname.application", null));

                // Register the task in the root folder
                ts.RootFolder.RegisterTaskDefinition(@"ClickOnce app", td);


            

【讨论】:

【参考方案2】:

您可以创建一个 appref-ms 文件并将其放在本地任务调度程序启动的位置,或将其放在文件共享上(这可能需要额外的权限,例如“执行”)。

然后让任务调度器启动这个文件。

【讨论】:

以上是关于从任务计划程序调用 ClickOnce 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

ClickOnce一项Winform部署

从计划任务运行 perl Plackup 脚本

如何解决 Windows 计划任务未运行的问题?

调用 vbs 的批处理文件不会从任务调度程序运行

通过 Windows 任务计划程序调用 SSIS 包时,发送邮件任务在 SSIS 中不起作用

如何为一组任务确定计划,估计每个任务所需的时间?