c#主要项目和服务

时间:2011-05-15 17:09:28

标签: c# service

尽管我进行了彻底的谷歌搜索,但我仍然对此事感到困惑。

让我解释一下我的情况。我创建了一个c#项目,使用户能够手动备份数据库(通过单击按钮)。现在,用户必须能够安排数据库备份自动运行的时间。为实现这一目标,我计划在达到设置备份时间时创建一个通过Windows调度程序启动的服务。

我需要将服务与主项目一起部署(在我的脑海中,服务将是一个不同的项目。也许我在这里错了。)。

我的问题是当用户安装主项目时如何部署服务?

PS:我正在使用c#express和sql 2008 R2 express。

2 个答案:

答案 0 :(得分:1)

您使用什么来安装主应用程序。有可能你说的包装工具也会有钩子,允许你安装服务。例如,如果您使用Wix创建msi包来安装主应用程序,那么您可以将Wix配置为也安装该服务。

This google search会为您指出相关文章。

如果您没有使用任何安装程序工具,假设您只是向用户提供包含所有可执行文件的zip,那么您将需要手动安装该服务。 This article非常适合创建可自行安装的服务。您可以使用Process.Start执行installutil exe来实际安装/卸载服务。

<强> EDIT1: 基于Rup对您的问题的评论,您已经拥有备份数据库所需的代码。您所需要的就是能够安排这个。用户在UI中输入计划后,您可以在任务计划程序中创建相应的任务。让该任务执行您的主应用程序,传入参数-backup "dbName"或前面提到的备份代码运行所需的信息。

您可以使用following template [适用于控制台应用程序,但也适用于您的gui应用程序。您需要检查的是,是否已传入任何开关,然后不启动gui,而是简单地执行备份功能代码。] ...还有很多existing questions在StackOverflow上使用命令行解析工具...

答案 1 :(得分:0)

我将采用的方法是为UI创建项目,为服务创建项目。该服务将是一个始终运行的Windows服务,并负责创建计划任务。 (而不是让计划任务启动服务。)如何创建计划任务是相当开放的,你可以炮轰AT,或者你可以使用TaskScheduler类型的库进行一些COM互操作。我希望这会有所帮助。