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

时间:2012-12-26 19:59:50

标签: visual-studio-2012 clickonce scheduled-tasks

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

我从Task Scheduler获得的错误是这样的: 任务计划程序无法在任务“\ TaskName”的实例“{d5cc956f-c09e-41dc-a04d-a4276f38704e}”中启动操作“\ pathToClickOnceApp”。附加数据:错误值:2147942403。

2 个答案:

答案 0 :(得分:0)

你可以创建一个appref-ms文件并将其放在任务调度程序启动的本地,或者将其放在文件共享上(这可能需要额外的权限,如'execute')。

然后让任务计划程序启动此文件。

答案 1 :(得分:0)

这是一个示例代码,用于创建可以调用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);


            }