当我们谈论生命的意义时,这是部署(安装)专家关于它的两分钱 :-)- 答案很长(似乎 :-),但它会包含在哪里寻找的具体信息每一点..
首先,让我们声明部署并不是一件轻而易举的事,尽管许多开发人员希望看到这样的情况(作为一名部署专家,我经常观察到软件开发过程中的利益相关者实际上是这样思考的——简单地说,直到发货前一天,部署才被遗忘:-)
将其与可乐进行比较,这是一个大胆而简单的例子。 “开发人员”生产液体,但在这里很容易意识到,这项工作还没有完成。 :-)
Visual Studio 本身并没有真正支持部署策略。基于以下列表中提到的几个部署领域,当然有很多技术,其中一些来自 Microsoft,可以帮助实现这一点。
我要做的是为不同的客户或安装服务子集的场景构建设置包,如客户端/服务器场景或其他(参见下面列表中的第 3 号。)
其次,正如您可能从其他答案中看到的那样,部署不是部署。
部分地,这取决于人们是否将部署视为仅通过 MSBuild 生成二进制文件或部署到测试系统或部署到客户,例如通过更新生产网站或制作 DVD 或将可执行文件上传到更新网站...
有几个不同的领域肯定有关系,但每个编号的领域都足够大和复杂,足以拥有自己的专家:
-
被视为架构一部分的部署必须处理源和二进制结构和实体,例如项目和二进制结构(有多少.exe、.dll文件,它们的依赖关系如何,变化计划。
=> 正如您所提到的,您在(Visual Studio 等)解决方案、项目以及命名空间领域,特别是在 WCF 领域,您有合同等,您有(POC#)接口等。您有 Nuget 或其他工具来解决和管理依赖项。
.NET 必须提供程序集的概念来处理这个问题,例如架构。如果在自己的程序集中部署接口和契约,如何处理客户端/服务器场景,程序集如何相互依赖,取决于您和架构..
作为本地 Windows 或其他操作系统集成的一部分进行部署:您必须考虑通常必须在哪些系统目录中放置某些文件或数据。您必须考虑共享 dll、共享数据、项目数据、临时数据、用户特定数据、注册表、文件系统、Windows 徽标要求、最佳实践、服务配置等。
部署作为创建设置的过程,拥有安装,除其他事项外,它还完成了 2- 中提到的所需操作以及图形等附加任务安装前端(设置 GUI)、许可证确认、新增功能部分、可选组件的选择(想想 Visual Studio 设置)、卸载/修复/修改可能性等等。
部署为 devops 进程,例如continuous integration , continuous delivery and/or continuous deployment 的一部分。这里有两个要点:从技术上讲,有一个定义的过程,它会自动执行 2. 和 3. 中提到的事情(或者 Web 部署步骤)作为构建过程的一部分(“构建后步骤”)。
这可以包括创建设置或设置的层次结构 - 或根本不使用设置)。第二个是让测试人员、开发人员和管理人员(甚至客户)至少每天早上甚至更频繁地查看最后一个夜间或每日构建的已安装示例,可能有多个部署变体(客户端/服务器?、基本/教授?)或在不同的系统上。
你一半在开发者世界,一半在管理世界。
这里的重点通常不是像 3 那样创建复杂的设置,而是主要定义自己的“打包”和复制(和签名......等)过程,并将它们作为开发(以及测试和交付)的一部分自动化过程。 Puppet 和 Chef 已被提及。
部署为 web 或云部署(也可以是 devops 流程的端点)- 其他人对此已经说过,我将在这里省略细节,但一个重要的区别是,如果您正在谈论部署到客户或部署到中间测试或登台系统。
也许有一点值得对 devops 提及这一点,那就是部署到在线服务器、服务器场或云都有自己的挑战。
-
部署主要被视为将可交付、购买和/或拥有的编程软件分发到公司及其子公司的所有数千台 PC 的管理过程。当然也有专门的工具,包括更新策略、监控、许可证管理等等。您现在是在管理世界,而不是在开发人员世界。 微服务对于主要用于安装和分发“大型”软件包(如 MS Office 或 Oracle 等)的管理员来说将是一个新的高挑战。
- 这个话题对于开发人员来说并不像看起来那么无聊。主要是因为开发人员和管理员的两个“世界”正在合并。而开发人员必须关心“在现实世界中运行软件”的客户观点。 Devops 只是一个开始。每个人都知道虚拟机,但现在我们有软件定义的网络、虚拟应用程序、虚拟服务器场、云等。您可以通过依赖项定义部署架构,而无需任何编程,只需通过配置即可。因此,部署应该是您的应用程序架构的一部分,但大多数情况下它还不够(足够)。事实上,到目前为止,管理视图几乎没有与软件生产者/开发者的视图集成。关于微软,Windows 团队在这里做了很多工作,尤其是。在服务器产品线中,这从未与开发团队 AFAIK 进行过真正的战略协调(到目前为止,这可能对每个软件商店都有效:-)
目前,很多发布与 devops 或持续流行语相关的内容的人对设置的经验并不丰富。在其他必要步骤中,建筑设置可以被视为一项特殊技术。
鉴于您有兴趣了解有关 3.(设置)的更多信息:
如果您不想只复制可执行文件,而是想要拥有完整设置的功能,这比复制做更多的工作,设置策略的一部分可以是使用自己的选择进行捆绑设置(有时称为套件设置或引导程序设置)特征。他们可以调用底层的小型设置,例如用于您的微服务。
Visual Studio 本身不再支持像 MSI 这样更复杂的设置类型,尤其是从来没有将设置分组到包,部署一堆(或服务的变体)——VS 对“ClickOnce”部署提供了一些支持,但这更多地是针对数据库(“智能”)客户端而不是服务甚至微服务。
点击一次:https://msdn.microsoft.com/de-de/library/31kztyey.aspx
WiX 工具集可以替代 Visual Studio 中缺乏“真正的”设置创建,它是由 Microsoft 员工组成的开源项目。或 InstallShield Express(它是免费的,但商业版本的有限变体)。
使用这两者,您可以创建完整的 MSI 设置,这可能是 windows setup zoo 中最复杂的设置类型。
a) 当然,除了 MSI(也称为 Windows Installer)之外,还有其他设置类型,它们来自第三方供应商,它们或多或少是专有的,但更简单:例如Nullsoft - NSIS 和 InnoSetup.
我不会提供用于创建单个 MSI 设置的链接,因为可以通过下一行中的创建 MSI 设置包的给定链接轻松找到它们:
b)
在 Wix“世界”中创建选择和安装其他(定义的底层子集)的设置的工具称为“Burn”:
使用 Burn 创建设置包:
http://wixtoolset.org/documentation/manual/v3/bundle/
为此,您可以从 WiX 的创始人那里获得特别(付费)支持,他为此专门创建了一家公司:
https://www.firegiant.com/wix/tutorial/net-and-net/bootstrapping/
可以在 SA 上找到创始人 Rob Mensching 并回答专门的问题。
c) InstallShield Suite 设置:
另一个是已经提到的工具 InstallShield,但为此您将需要他们的 InstallShield Premium 变体,该变体要花很多钱:
http://helpnet.installshield.com/installshield21helplib/helplibrary/SteCreatingSuites.htm
d) 设置工厂:
https://www.indigorose.com/setup-factory/
e) 我敢肯定,很多人会建议看看 Docker。
虚拟应用程序不仅是设置,而且它们在“已安装”状态下将自己与沙盒等其他应用程序隔离开来。
参见例如https://docs.docker.com/docker-for-windows/
f)
如果我不提到 APP-V 作为与 docker 共享一些但不是全部功能的虚拟应用程序安装技术,那么该列表将不完整。但这些技术并不是真正为协调多个交付而设计的,而是仅用于交付一个应用程序。
微软还定义了一种名为 AppX 的新设置类型。
特别是你必须有所不同,如果你想为 Windows 创建“传统”(完整)桌面应用程序,其中 MSI 设置是 Windows 8 以来新类型的已知技术或存储应用程序(又名通用 Windows 应用程序,又名 Windows 商店应用程序,又名现代应用又名 Metro 应用)。
AppX:
https://msdn.microsoft.com/en-us/library/windows/desktop/hh446767(v=vs.85).aspx
AppX 的目标设置类型比 MSI 更简单。
通用 Windows 应用 (UWP):
https://docs.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp
对于任何更详细的信息,我们必须了解更多您的要求。