Windows 创建MSI或脚本以通过AD部署EXE

Windows 创建MSI或脚本以通过AD部署EXE,windows,active-directory,windows-installer,exe,Windows,Active Directory,Windows Installer,Exe,第一: 我知道还有其他问题会问类似/相同的问题,我已经研究过了,尝试过所有问题,但没有解决办法 问题是: 我们使用Epson Iprojection(从这里下载:),但是我找不到一种方法来获得MSI(我开始认为在.exe中没有MSI捆绑),而且我似乎无法通过CMD在计算机上安装它,开始使用AD。任何帮助都将不胜感激 含糊的回答:让我试着从上面那些杂乱的评论中得出一个答案。我只是简单地测试了一下这个软件,它的部署可能并不像所表达的那样糟糕请记住,这是一个通用的答案,适用于将来会找到它的人,而不是O

第一: 我知道还有其他问题会问类似/相同的问题,我已经研究过了,尝试过所有问题,但没有解决办法

问题是: 我们使用Epson Iprojection(从这里下载:),但是我找不到一种方法来获得MSI(我开始认为在.exe中没有MSI捆绑),而且我似乎无法通过CMD在计算机上安装它,开始使用AD。任何帮助都将不胜感激

含糊的回答:让我试着从上面那些杂乱的评论中得出一个答案。我只是简单地测试了一下这个软件,它的部署可能并不像所表达的那样糟糕<代码>请记住,这是一个通用的答案,适用于将来会找到它的人,而不是OP本身(这里没有真正的答案)


尽职调查:如果我对包裹有问题,我总是尝试咨询。某个人,某个地方最终也会遇到同样的问题

静默安装:传统设置的静默安装通常是可能的(不总是),但永远不会真正可靠。对于Installshield,它涉及记录对话框答案的答案文件(
setup.iss
)。但是,在某些系统上可能会突然出现未知对话框(
磁盘空间不足
重新启动提示
意外锁定或正在使用的应用程序警告
意外服务运行警告
等…
)并因此意外地停止安装,因为响应文件没有相关对话框的记录值。这个特定的Epson安装程序在卸载时也有一个不幸的重新启动要求,这对于大规模部署来说是很难处理的(可能会自动重新启动-没有警告)

重新打包:我个人会尝试捕获安装。其中大多数都很昂贵,但可以输出MSI、MSIX或其他部署包类型。当包包含复杂的自定义逻辑(例如,创建动态内容(密码、唯一GUID等)时,以及在许多非常特定的技术情况下,重新打包失败

联系供应商:如果您捕获了一个不起作用的MSI,为什么不尝试将其发送回供应商,并对该软件的部署难度提出一些意见,或许还可以提及?我会告诉他们,如果他们不能提供一个有效的部署解决方案,你就必须从你的网络中删除整个软件。时间至关重要。“有些解决方案只有在你的时间毫无价值的情况下才是免费的”(有点断章取义,但问题是:我们需要及时有效的解决方案)

注意:我曾经不得不编译一个特殊的设置来处理客户的问题 部署问题是我们的错。部署问题需要在标准化级别进行修复。标准


单个exe下载中隐藏着
iProjection_inst.exe
,这是一种提示选择语言的包装器,似乎没有标准的“非交互”模式

这里面是
instData\Setup.exe
,一个老式的“全屏”InstallShield安装程序,带有外部
ini
/
cab
文件

使用
Setup.exe/?
运行此命令不会提供任何命令行参数,就像现代InstallShield
Setup.exe
一样

尽管它支持通过
Setup.exe/r
录制应答文件,但当我尝试使用
Setup.exe/s
重播应答文件时,它似乎仍会提示输入EULA,然后安装失败

因此,这实际上是最内层安装程序中与对话框序列有关的设计缺陷

假设Epson无法修复它,并且重新打包太难,一个黑客的替代方法是在显示“欢迎”屏幕后,使用Powershell自动化
instData\Setup.exe的UI,但我认为这不能作为广告脚本运行

$wshell = New-Object -ComObject wscript.shell
$aName = "Epson iProjection Setup"
function Next() { 
  if ($wshell.AppActivate($aName)) { 
    $wshell.SendKeys(' '); 
    start-sleep 1;
  } 
}
function AcceptEula() {
  if ($wshell.AppActivate($aName)) {
   $wshell.SendKeys("{TAB}"); 
   $wshell.SendKeys("{TAB}"); 
   $wshell.SendKeys(' '); 
   start-sleep 1;
  } 
}
Next; AcceptEula; AcceptEula; start-sleep 20; Next;

我知道这是一条旧线,但现在看起来可能很容易。最新的2.41码

似乎有一个微星在里面。只需跳入%temp%文件夹并按日期组织,即可查看最新文件。运行安装程序,将显示一个名为GUID的新文件夹,在我的示例中为{27CDEEE8-B6F2-45a7-A48E-696862573D9B}


在此文件夹下有一系列InstData文件夹,如InstDataX64,您可以在其中找到MSI。

作为开始。现在无法查看此项。我已经查看了此项并做了进一步的研究,我发现.exe中没有捆绑的MSI,因此现在我需要了解如何通过cmd安装它,因为/s不起作用。乍一看,我也无法在中看到它。您是否可以选择捕获安装?据我所知,这是一个经过包装的本机InstallShield安装程序。运行
setup.exe
,然后在
%temp%
文件夹中查找GUID名称为的子文件夹(如
{27CDEEE8-B6F2-45a7-A48E-696862573D9B}
)。在里面你会发现一个
InstData
子文件夹和另一个
setup.exe
。所以我做了“尽职调查”(或者至少我认为我做了)部分,我还与其他人合作找到了一个解决方案,而忍者没有我正在使用的程序(虽然我可以告诉他们在重新命名之前有旧版本,至少我是这么认为的)。据我所知,静默安装不是一个选项(在CMD中使用-s)。我已经联系了供应商,但是没有得到回复。当您安装捕获时会发生什么?我假设您已经执行了捕获?要么我做得不对,要么它不工作(我认为这是因为它安装了驱动程序)在安装了不起作用的软件包后,可能会查找并尝试手动安装它们?请尝试使用(找到此文件)执行此操作。驱动程序文件包括
*.cat
*.inf
*.dll
和类似文件。我认为