MSI无提示安装不会添加注册表和服务条目

问题描述:

我有Windows没有源文件的InstallShield可执行文件(.exe)。该安装程序以交互式(GUI)方式工作。安装完成后,我可以在services.msc中看到注册表项和条目。现在需要将其更改为无声安装以实现自动化。MSI无提示安装不会添加注册表和服务条目

我已经使用一些提取选项将该InstallShield exe转换为msi。

当我试图使用msiexec.exe的以静默方式安装此MSI,安装了罚款,但它不添加这些注册表项和SERVICES.MSC项,

这是我用管理员用户使用的命令通过cmd提示登录,

msiexec.exe /i app.msi /qn 

我在这里错过了一些东西吗?

注 - 这里的问题是我没有InstallShield构建的源代码,只有可执行文件。

我已经看到像ALLUSERS和INSTALLLEVEL的其他属性。有什么我需要补充吗?

我试图在Windows Server 2012 R2上。

+0

这是您或您的公司开发的或第三方的安装吗?你知道它是来自Basic MSI还是InstallScript MSI,并且你能否在你的问题中澄清你用来从setup.exe中提取它的命令行? –

+0

@MichaelUrman,这是使用第三方开发的我猜InstallShield。我通过运行“app.exe/a”将该exe文件转换为msi,并创建了msi和其他支持文件。 – Prabu

+0

@MichaelUrman问题是我们现在没有源代码只有exe。 – Prabu

有时,MSI执行在InstallExecuteSequence InstallFinalize后自定义操作。这是设计中的一个错误,并且可能导致无提示安装失败,因为它永远无法到达这些自定义操作(安装在InstallFinalize处结束)。这不同于交互式运行,在将控制传递回GUI序列之前,它将在InstallFinalize之后执行自定义操作。还有可能的是,自定义操作仅在GUI序列中定义,导致它们在静默安装期间从不运行 - 另一个错误设计这并不罕见。

您可以使用Orca或其他工具检查InstallExecuteSequence中的InstallFinalize之后是否存在自定义操作?坏消息是,有此错误没有很好的修复,但你可以尝试通过只显示进度条运行安装,看看这导致要运行的自定义操作:

msiexec.exe /i app.msi /qb- 

这将运行基本没有模式对话框的UI。有效的半沉默设置。如果这不能尝试运行/ qb而不是/ qb-。我们的想法是通过运行最小的GUI来执行缺少的自定义操作,以便运行GUI序列。

最后,正如Bogdan指出的那样,您提取MSI的wrapper exe包含额外的安装逻辑,当您单独运行MSI时无法运行。