我的问题可能看起来很奇怪,但我想知道是否可以在不启动虚拟机操作系统的情况下安装软件。我需要在不同的 Windows 虚拟机上安装大量(我真的是说大量)不同的软件配置,并且我试图找到一种方法来自动化此过程,并且在不启动虚拟机的情况下完成此操作,因为我的硬件资源不是无限的。我查看了一些软件的安装过程,其中大多数似乎只是在确定的位置复制文件并通过添加键和值来修改注册表。
所以这是我的理论,我希望你能认可/推翻它,为什么不简单地在“样本”虚拟机上安装一个软件,使用以下方法跟踪此安装安装追踪器例如,使用以下方法记录注册表中的更改瑞格射然后通过一些脚本,使用以下工具应用完全相同的更改:库和蜂王浆在目标 VMDK/VDI 上。这是我考虑的顺序:
[关于标本 VM]
- 快照注册表
- 安装软件
- 快照注册表
- 获取安装跟踪脚本,该脚本会将安装过程中已部署的所有文件复制到包中
[在任何与 libguestfs 兼容的系统上(主要是 UNIX)]
- 使用 libguestfs 和之前获得的安装跟踪(涉及脚本)将包中的所有文件复制到目标 VMDK/VDI 上的正确位置
- 根据快照将更改应用到注册表(涉及脚本)
- 享受
在开始之前,我想知道我是否在做梦,或者这个理论是否可行。确实,这会节省我很多时间,但我对 Windows 操作系统的经验不足,不知道安装是否真的可以通过这种方式“伪造”。或者也许你知道一个已经提供这些功能的工具?
答案1
由于您已经拥有用于 (a) 从虚拟驱动器安装 NFTS 和 (b) 以正确方式导入注册表项的工具,因此部署任何软件的离线安装应该不会遇到任何问题。
不幸的是,几个问题这将是一个非常糟糕的解决方案:
- 您必须彻底分析每个产品的注册表更改和文件修改。
- 你必须这样做每个操作系统和体系结构单独获取正确的文件和注册表路径。
- 和每个新版本软件,所有的工作都必须完成从头开始。
- 由于可能没有人经常这样做,你会发现互联网上没有资源如果发生意外情况,它既不能提供现成的解决方案,也不能为调试提供太大帮助。
- 非线性安装(即根据环境、先决条件的可用性等而变化)将更加痛苦。
- 调试将是一场噩梦。
长话短说,这是有可能的,但是不值得这么费力。
我个人建议你考虑选择解决方案-a软件部署系统将安装预定义的软件包当虚拟机启动时。
软件会在用户或服务开始工作前部署,同时你不需要启动操作系统,你只需要维护软件包并部署它们。
就我个人而言,我使用工作量部署系统通用动力Windows 客户端(使用 GPE 机制在启动时运行的服务)。工作量本身只是一个托管在 SMB 或 Samba 共享上的 JScript 应用程序 - 可供客户端机器访问。
您在 nix 机器上准备文件不会遇到任何问题。配置和包存储在简单的 XML 文件中。XML 包定义包含一组供客户端运行的指令 - 引用与 Wpkg 一起存储在 SMB 共享上的安装文件。当然,您仍然需要一些 Windows VM 来进行包测试。
Wpkg 网站包含大量的包定义以及一个维护它们的相当大的社区。一旦你习惯了简单的 XML 语法,您将可以毫无问题地自行创建软件包。
使用 Wpkg,您可以使用原始安装程序。您不必分析它们,只需阅读软件手册(或 Google)并找到所有必要的无人值守/静默安装选项。
而且当然,工作量免费 :)
答案2
答案3
是的,也不是,
有些软件可以,例如“Lotus Notes”、“Oracle”,有些软件不可以,例如“Microsoft Office”。
一切都取决于软件是否具有一些软件保护功能,“在线激活”、“唯一注册表项”、“CPU ID/硬件识别”。
通常,已安装的 VM 磁盘上的注册表和文件监视器日志和重做可以完成该工作,排除那些软件保护功能。
您是否考虑过自动安装脚本?类似宏重放脚本的东西,单击接受许可按钮,然后继续。
或者实际上您可以先安装软件,然后运行 Sysprep,然后克隆并激活?
只要您的应用程序可以在 Sysprep 中存活下来,那么最好的方法就是完全配置一台机器,然后进行 sysprep 和克隆,ps:“甚至 Microsoft Office 也可以工作”。您所需要的只是在第一次重启后激活。