我的任务是将50页的安装手册减少到“更少”;需要以特定的顺序安装大量的应用程序,并提供特定的选项等等。我可以使用任何一个流行的安装程序(WiX,NSIS,Inno安装程序)来自动化这个过程,或者我需要使用Powershell吗?
我读过这些安装程序可以做什么,据我所知,它们被设计为将一个应用程序安装到一台计算机上--我还没有看到--或者即使它们可以非常详细地用于控制其他安装程序--“在这个向导页面上使用这个、这个和这个选项,但是在下一个向导页面上没有这个选项,然后安装到这个路径上,然后输入这些细节(用户,不管什么)”。
我是不是太了解这些工具的作用了?既然我需要这样做,最好的办法是什么?
更新2:我了解到安装程序通过配置文件提供静默安装。整洁!我目前正在考虑NSIS (生成Powershell脚本和其他安装程序)作为最容易开始和使用的选项。我喜欢这样,我不需要一个定制的IDE。但我也在想,在Windows 7&10的世界里,NSIS (很快)会不会过时呢?
发布于 2015-11-12 18:22:06
您应该使用自定义的引导程序UI查看WiX。这可以用来安装任意数量的设置,以您想要的任何顺序。棘手的问题是,是否所有这些机构都需要展示自己的UI,一个接一个。如果它们都可以通过命令行参数静默安装,那么WiX引导程序可以显示您的UI来收集所有选项,然后在显示整个操作的进度时静默地安装每个设置。您还可以在程序和功能中获得整个包的一个条目。所以像WiX这样的东西可以做到,但是UI需求可能会使它变得尴尬。
发布于 2015-11-12 17:43:29
PowerShell可以这样做,但是它是通过调用COM对象和向窗口发送键来实现的,所以这不是最好的方法。我将重新发布我昨天发布到一个类似的问题,使用PowerShell卸载一些不想要的软件。
QFT:
PowerShell不会与提示交互.您不能让它在可执行文件中单击"Next“,因为它看不到它。
不过你可以给它发钥匙。你真的只是在使用COM对象。
因此,首先,通过设置一个包含数组的变量获得进程ID,该数组的数据由进程名称定义。假设您的进程名为“卸载”,并且该进程已经在运行:
$a = Get-Process | ?{$_.Name -eq "Uninstall"}
启动COM:
$wshell = New-Object -ComObject wscript.shell;
将带有此进程ID的卸载程序带到前面,这样我们就可以发送击键:
$wshell.AppActivate($a.id)
再给我几秒钟把窗户往前推。我选择了5,但如果你的机器没有压力,2可能就足够了:
Start-Sleep 5
现在开始告诉它你想发送什么密钥。这里的语法如下:()中的任何内容都是要发送的。单引号中的位置是要发送的击键,逗号后面的位置是您希望它在继续之前等待多久。假设第一个屏幕是"Next“,您可以通过告诉PowerShell发送ENTER键并等待5秒来发送第一个命令:
$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,但这是基于像素的,据我检查,所以如果您在具有不同屏幕分辨率的机器上运行它,可能会导致问题。
发布于 2015-11-17 08:06:26
安装其他安装程序对任何体面的安装程序生成器都是没有问题的。
这些其他安装程序要么是msi
、exe
或zip
文件。
我不认为安装程序(用于SQL数据库服务器等)提供静默安装(通过百万命令行参数或配置文件)。 我非常怀疑我能否在静默模式下启动这些安装程序(有一百万个命令行参数).:-(
获取SQL数据库服务器的安装程序并检查它。大多数安装程序提供静默安装。
既然我需要这样做,最好的办法是什么?
进行完整运行,并注意所有安装步骤。
然后将这些步骤转换为您选择的安装程序构建器。它主要将CLI命令复制到Exec()或ShellExec()调用中,然后复制配置文件并修改跨组件配置。
我还没有看到这一点,甚至他们可以用非常详细的方式来控制其他安装程序。
想想所有提供DirectX的游戏安装程序,或者像XAMPP或WPN这样的预先打包的web开发栈(说到最后一个:您可能会看到这个InnoSetup脚本文件)。
多个软件组件的包装安装非常常见。
https://stackoverflow.com/questions/33676144
复制相似问题