首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安装其他安装程序?

安装其他安装程序?
EN

Stack Overflow用户
提问于 2015-11-12 16:16:24
回答 3查看 695关注 0票数 2

我的任务是将50页的安装手册减少到“更少”;需要以特定的顺序安装大量的应用程序,并提供特定的选项等等。我可以使用任何一个流行的安装程序(WiX,NSIS,Inno安装程序)来自动化这个过程,或者我需要使用Powershell吗?

我读过这些安装程序可以做什么,据我所知,它们被设计为将一个应用程序安装到一台计算机上--我还没有看到--或者即使它们可以非常详细地用于控制其他安装程序--“在这个向导页面上使用这个、这个和这个选项,但是在下一个向导页面上没有这个选项,然后安装到这个路径上,然后输入这些细节(用户,不管什么)”。

我是不是太了解这些工具的作用了?既然我需要这样做,最好的办法是什么?

更新2:我了解到安装程序通过配置文件提供静默安装。整洁!我目前正在考虑NSIS (生成Powershell脚本和其他安装程序)作为最容易开始和使用的选项。我喜欢这样,我不需要一个定制的IDE。但我也在想,在Windows 7&10的世界里,NSIS (很快)会不会过时呢?

EN

回答 3

Stack Overflow用户

发布于 2015-11-12 18:22:06

您应该使用自定义的引导程序UI查看WiX。这可以用来安装任意数量的设置,以您想要的任何顺序。棘手的问题是,是否所有这些机构都需要展示自己的UI,一个接一个。如果它们都可以通过命令行参数静默安装,那么WiX引导程序可以显示您的UI来收集所有选项,然后在显示整个操作的进度时静默地安装每个设置。您还可以在程序和功能中获得整个包的一个条目。所以像WiX这样的东西可以做到,但是UI需求可能会使它变得尴尬。

票数 2
EN

Stack Overflow用户

发布于 2015-11-12 17:43:29

PowerShell可以这样做,但是它是通过调用COM对象和向窗口发送键来实现的,所以这不是最好的方法。我将重新发布我昨天发布到一个类似的问题,使用PowerShell卸载一些不想要的软件。

QFT:

PowerShell不会与提示交互.您不能让它在可执行文件中单击"Next“,因为它看不到它。

不过你可以给它发钥匙。你真的只是在使用COM对象。

因此,首先,通过设置一个包含数组的变量获得进程ID,该数组的数据由进程名称定义。假设您的进程名为“卸载”,并且该进程已经在运行:

代码语言:javascript
运行
复制
$a = Get-Process | ?{$_.Name -eq "Uninstall"}

启动COM:

代码语言:javascript
运行
复制
$wshell = New-Object -ComObject wscript.shell;

将带有此进程ID的卸载程序带到前面,这样我们就可以发送击键:

代码语言:javascript
运行
复制
$wshell.AppActivate($a.id)

再给我几秒钟把窗户往前推。我选择了5,但如果你的机器没有压力,2可能就足够了:

代码语言:javascript
运行
复制
Start-Sleep 5

现在开始告诉它你想发送什么密钥。这里的语法如下:()中的任何内容都是要发送的。单引号中的位置是要发送的击键,逗号后面的位置是您希望它在继续之前等待多久。假设第一个屏幕是"Next“,您可以通过告诉PowerShell发送ENTER键并等待5秒来发送第一个命令:

代码语言:javascript
运行
复制
$wshell.SendKeys('~',5)

等待函数是可选的,但就您的目的而言,您肯定需要它。(如果您不需要它,$wshell.SendKeys('~')将发送ENTER键并立即移到下一个命令。)

手动遍历卸载过程,使用所有击键,对于发送的任何击键,请注意卸载的下一部分加载所需的时间,并在脚本中等待更长的时间(例如,如果它立即处理ENTER键,我会让它在发送下一个命令之前等待3或5秒。如果加载需要5秒,我会告诉它在发送下一个命令之前等待10秒)。

字母是字母,数字是数字。大多数非命令只是分配给它们的键(也就是说,如果您想输入"K“,您的命令就是$wshell.SendKeys('K')),您可以在这里得到特定键的概要:https://msdn.microsoft.com/en-us/library/office/aa202943(v=office.10).aspx

/QFT

您可能想查看Auto it,但这是基于像素的,据我检查,所以如果您在具有不同屏幕分辨率的机器上运行它,可能会导致问题。

票数 1
EN

Stack Overflow用户

发布于 2015-11-17 08:06:26

安装其他安装程序对任何体面的安装程序生成器都是没有问题的。

这些其他安装程序要么是msiexezip文件。

我不认为安装程序(用于SQL数据库服务器等)提供静默安装(通过百万命令行参数或配置文件)。 我非常怀疑我能否在静默模式下启动这些安装程序(有一百万个命令行参数).:-(

获取SQL数据库服务器的安装程序并检查它。大多数安装程序提供静默安装。

  • 另一个安装程序构建器创建的msi或exe文件接受CLI参数以选择组件并设置目标路径。
  • 即使作为SFX存档创建的exe文件也接受解压缩的目标路径。
  • 有些安装程序并不以CLI参数的形式提供GUI配置对话框的所有表单字段。对于这些安装程序,您需要一个后配置步骤,它可能只是将默认配置文件复制到应用程序文件夹中。
  • 是的,安装程序也可以围绕"gui自动化“或”插入击键“的想法从主安装程序内部使用AutoIt、AutoHotkeys或任何其他自动化工具。
    • 您需要为每个安装程序构建一个自动化脚本,并从主安装程序执行它。它可能很适合测试和重放各个组件的安装。
    • YAGNI

既然我需要这样做,最好的办法是什么?

进行完整运行,并注意所有安装步骤。

  • 列出您需要的安装程序
  • 查找下载的urls
  • 下载安装程序
  • 下载您需要的其他工具(解压缩?)
  • 对于每个安装程序,检查它接受的CLI参数。
    • 检查您是否获得了一个体面的默认配置,当您离开一些CLI args时

  • 将CLI中的每个安装程序安装到目标位置

然后将这些步骤转换为您选择的安装程序构建器。它主要将CLI命令复制到Exec()或ShellExec()调用中,然后复制配置文件并修改跨组件配置。

我还没有看到这一点,甚至他们可以用非常详细的方式来控制其他安装程序。

想想所有提供DirectX的游戏安装程序,或者像XAMPP或WPN这样的预先打包的web开发栈(说到最后一个:您可能会看到这个InnoSetup脚本文件)。

多个软件组件的包装安装非常常见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33676144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档