【问题标题】:How do I keep my C# program from running as it's installed?如何防止我的 C# 程序在安装时运行?
【发布时间】:2014-01-28 14:26:55
【问题描述】:

我正在用 C# 开发一个控制台应用程序,它应该只在每周的特定日期/时间运行一次。当我修改、发布和安装应用程序时,安装程​​序总是运行程序。我必须在我的代码开头添加一个 if 语句来比较当前日期/时间,我必须在任何时候重新编译/重新发布时手动更改它,以确保在我安装新版本时程序不会运行。虽然这样可行,但必须这样做似乎很愚蠢。

我确定我在某处遗漏了一个明显的设置,我只是在等待某个英雄给我我的每日一记耳光。

谢谢!!

(经过编辑以更准确地描述时间表。)

【问题讨论】:

  • 谁将在每天的特定时间运行它?决定现在是否合适的逻辑是什么?
  • 我认为您正在寻找Windows Service 应用程序。在这里阅读更多 -> msdn.microsoft.com/en-us/library/d56de412%28v=vs.110%29.aspx
  • 所以您是说您的安装程序正在自动运行程序?像“完成后运行”选项?可能有助于了解您如何创建安装程序,是否可以更改“完成后运行”设置?
  • 我使用发布向导将安装程序发布到网络位置,然后运行 ​​setup.exe 进行安装。我使用计划任务来安排应用程序在适当的日期/时间运行。

标签: c# installation scheduled-tasks


【解决方案1】:

如果您的问题是无法控制安装或发布过程是否会运行程序 - 您可以让您的 main 期望某个命令行参数运行,没有它 - 它只会退出。

如果程序通过调度程序运行,请让调度程序传入正确的参数。

例如

public static void Main(string[] args)
{
   if (args.Length == 1 && args[0].Equals("NOW_IS_THE_TIME"))
   {
       // Run
   }
}

您也可以在设置中保存一个标志,指示它是否是第一次运行,就像 Install ClickOnce without running 中建议的那样

【讨论】:

  • 虽然这个解决方案比我目前正在做的更好,但它仍然看起来很笨拙。我只想让安装程序安装应用程序而不是运行它。
  • @MarkPetereit - 我同意,但是您的问题应该围绕您正在使用的特定安装\发布过程。就像我说的 - 这是针对您不控制 Install\Publish 的情况
  • 我明白了。您的解决方案没有回答我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多