VS2013 Windows服务-如何制作安装程序?

2024-02-19

我写了一个Windows服务。

我现在想将其打包到安装程序中。

我使用了 VS2013 x86 Native Tools 命令提示符,然后使用了以下命令:

要安装它:

installutil httpapiservice.exe

要卸载它:

installutil httpapiservice.exe /u

这非常有效。我可以在“服务”中看到新服务,停止和启动它没有问题。

然后我继续右键单击该项目并选择“发布”,它生成了一个 setup.exe

但是,当我运行 setup.exe 时,我可以看到它“下载并解压”文件。看起来正在安装,但“服务”中没有出现任何内容

谁能告诉我我做得是否正确?

Thanks


您需要将安装项目添加到您的解决方案中以构建安装程序可执行文件。

不幸的是,微软从 Visual Studio 2012 开始删除了他们的安装项目模板,而这本来可以完成这项工作。

这意味着您只能采用其中一种替代方案,这些替代方案要么功能较差、难以设置,要么价格昂贵。

注意 - 向下滚动到编辑 3 以获取我推荐的解决方案。这篇文章的其余部分只是为了强调替代方案。

如果您喜欢免费路线,可以添加InstallShield 限量版 http://blogs.msdn.com/b/visualstudio/archive/2013/08/15/what-s-new-in-visual-studio-2013-and-installshield-limited-edition.aspx到 Visual Studio,并使用它为您的解决方案创建安装项目。它适用于最新版本的 Windows 服务设置项目,但通常被认为是相当垃圾和有限的。以下是相关说明:link http://blogs.flexerasoftware.com/installtalk/2012/11/using-installshield-to-create-an-installation-that-installs-windows-services.html

WiX http://wix.codeplex.com/是一个免费的开源替代方案,它的功能要强大得多,但设置起来很棘手。

EDIT -

这是一篇描述如何使用 WiX 创建安装项目的文章:http://www.schiffhauer.com/wix-template-for-installing-a-windows-service/ http://www.schiffhauer.com/wix-template-for-installing-a-windows-service/

EDIT 2 -

截至今天 (22/04/2014),Microsoft 已将 Visual Studio 2013 中的安装项目恢复为 Visual Studio 扩展 - 请参阅这个帖子 http://blogs.msdn.com/b/visualstudio/archive/2014/04/17/visual-studio-installer-projects-extension.aspx

我自己没有尝试过,但它可能与 VS2010 设置项目相同,学习起来并不太难(并且互联网上有很多可用的帮助)我绝对建议您尝试这个来创建您的设置程序!

编辑 3(2016 年 4 月)-
我强烈建议您使用 Visual Studio 安装程序项目扩展(如上面的编辑中所述)为您的 Windows 服务(以及其他程序)创建简单的安装程序。它创建的安装程序很简单,但对于简单或小型项目来说看起来足够专业。

Visual Studio 2013 的扩展是here https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d
Visual Studio 2015 的扩展是here https://visualstudiogallery.msdn.microsoft.com/f1cc3f3e-c300-40a7-8797-c509fb8933b9
Visual Studio 2017 的扩展是here https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2017InstallerProjects

一篇描述如何使用旧的 VS2010 安装项目为 Windows 服务创建安装项目的文章是here https://support.microsoft.com/en-us/kb/816169。尽管这是一篇旧文章,但它可以直接应用于上面链接的新安装程序项目扩展。 (感谢 EbbnFlow 提供的链接)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2013 Windows服务-如何制作安装程序? 的相关文章

随机推荐

  • 如何检查两个日期时间是否在彼此的特定范围内?

    我有两个 datetime64 对象 a 和 b 我想确定它们是否在彼此的特定范围内 然而 范围并不对称 如果a在b的 30到120分钟之间 a比b早半小时到晚2小时之间 则两者在期望的范围内 我的日期时间对象看起来像 m d Y H M
  • Swift 惰性和可选属性

    和有什么区别Lazy or Optional斯威夫特的财产 例如 如果有人正在构建一个从侧面进入的导航栏 我认为这一切都应该在一个内UIViewController 用户可能永远不会打开菜单 但有时他们会 var menu Navigati
  • 在 C++11 中实现递归代理模式

    假设我们有一些Foo允许的对象 cout lt lt myFoo 3 myFoo 5 bar 这需要代理设计模式 斯科特 迈耶斯 Scott Meyers 详细介绍如下 https stackoverflow com questions 2
  • 将 MongoDB 集合移动到另一个集合的更好方法

    在我的网络抓取项目中 我需要将前一天抓取的数据从mongo collection to mongo his collection 我正在使用此查询来移动数据 for record in collection find his collect
  • 我可以在 .gitignore 文件中包含其他 .gitignore 文件吗? (就像类 C 语言中的 #include 一样)

    我有一些文件 例如vim gitignore SVN gitignore and CVS gitignore 散布在我的硬盘上 我可以简单地将这些 gitignore 文件包含在 gitignore文件在新的 Git 项目中吗 Edit 我
  • 空指针的取消引用

    该错误消息到底意味着什么以及如何修复它 空指针的取消引用 这意味着 self 可以通过 initWithStyle reuseIdentifier 的返回值设为 nil 并且后续对默认值的访问将尝试在 nil 地址处读取 因此取消引用 这肯
  • 如何避免包含类实现文件?

    而不是做 include MyClass cpp 我想要做 include MyClass h 我在网上读到过not这样做被认为是不好的做法 简而言之单独编译 首先 让我们举一些简单的例子 struct ClassDeclaration c
  • Flink时间特性和AutoWatermarkInterval

    在 Apache Flink 中 setAutoWatermarkInterval interval 向下游操作员生成水印 以便他们提前事件时间 如果水印在指定的时间间隔内没有更改 没有事件到达 运行时将不会发出任何水印 另一方面 如果在下
  • 如何将列表附加到 pandas 列、系列?

    假设我有以下数据框 d col1 1 2 col2 3 4 df pd DataFrame data d 我想延长col1带数组xtra 然而这会出错 xtra 3 4 df col1 append xtra 我怎样才能追加xtra to
  • 如何从 Swift 中的 valueChanged 事件获取触摸坐标

    背景 I ve 以前学过的 https stackoverflow com a 34764356 3681880如何使用手势识别器或continueTrackingWithTouch获取当前触摸位置的持续更新 然后使用它们执行如下操作 然而
  • 如何获取CodeAttribute中的属性值

    我写了一个方法来按属性获取属性值 public string GetAttributeValueByNameAttributeAndProperty CodeClass cc string nameAttribute string name
  • 如何在 Jenkins 的 url 中传递 credentialID

    我正在使用这个命令 sh git push https userid passwd innersource com scm raghu demo git 但我想使用 credentialsId f0079d43 9522 4133 9601
  • 在 Ruby 中冻结变量不起作用 [重复]

    这个问题在这里已经有答案了 我正在学习 Ruby 并且在使用时发现了有趣的行为Object freeze带变量的方法 在我冻结一个变量之后 或者Fixnum or Array 我还是可以修改的 这很奇怪 因为就我而言 这不应该发生 而且Ty
  • Pandas 通过正则表达式读取带有字符串分隔符的 CSV

    我正在尝试将格式奇怪的文本文件导入到 pandas DataFrame 中 下面是两个示例行 LOADED LANE 1 MAT TYPE 2 LEFFECT 1 SPAN 200 SPACE 10 BETA 3 474 LOADEFFEC
  • Javascript:用另一个函数重新分配一个函数

    假设我有这两个功能 function fnChanger fn fn function sys print Changed function foo sys print Unchanged 现在 如果我打电话foo I see Unchan
  • PHP“未选择数据库”

    我最近开始用 PHP 创建一个网站 我的大部分代码都可以工作 但是我发现了一个无法纠正的问题 我有一个页面 其中有很多对数据库的调用 在我的页面顶部 我正在连接并使用 SELECT 来获取有关相关产品的一些信息 在页面底部 我再次连接以获取
  • 如何使用 Zend Framework 2 中的插件渲染自定义视图

    我正在开发一个应用程序 需要在流程完成后发送电子邮件 由于电子邮件需要是 HTML 我有一个好主意 将视图渲染为电子邮件消息正文 以便我可以实现 单击此处在浏览器上查看此内容 功能 这一切都在实现 AbstractRestfulContro
  • 如何用 Maven 属性替换 web.xml 中的值?

    我有一个 Maven 项目 它将一些测试文件下载到其构建目录中 target files 然后 这些文件应该可供 servlet 使用 我可以通过将完整路径硬编码为
  • 如何跳过HTTP请求的AngularJS拦截器?

    我有一个 angularjs 应用程序 其中有一个拦截器 它将授权令牌添加到每个请求的标头中 然而 在应用程序的某个地方 我需要使用外部 API 拦截器会破坏它 因为它添加了这个外部 API 提供者不接受的授权标头 如何让 angularj
  • VS2013 Windows服务-如何制作安装程序?

    我写了一个Windows服务 我现在想将其打包到安装程序中 我使用了 VS2013 x86 Native Tools 命令提示符 然后使用了以下命令 要安装它 installutil httpapiservice exe 要卸载它 inst