问题描述
我的安装程序需要重新分发.NET框架,但是我不希望有setup.exe包装程序,因此,如果最终用户计算机未安装.NET包装,则我编写了自定义操作以启动.NET的Web安装程序。已经有它。这在.NET 4.0和.NET 3.5上可以正常运行,但是对于.NET 4.5,.NET安装程序报告正在等待另一个安装完成并失败-如果我的自定义操作位于Exec序列中,则此错误消息是正确的,但是我专门在UI序列的最早期放置了它,以允许嵌套安装。
My installer needs to redistribute the .NET framework, but I don't want to have a setup.exe wrapper so I've written a Custom Action to launch the web installer for .NET if the end-users machine does not already have it. This works perfectly fine with .NET 4.0 and .NET 3.5 but for .NET 4.5 the .NET installer reports "waiting for another install to complete" and fails - this error msg would be correct if my Custom Action was in the Exec sequence, but I specifically placed it very early in the UI sequence to allow for a nested installation.
完全相同的InstallShield配置/代码可以在.NET 3.5和.NET 4.0中正常工作,但是.NET 4.5失败,我正在使用Microsoft的标准Web安装程序:
The exact same InstallShield configuration/code works fine with .NET 3.5 and .NET 4.0 but fails with .NET 4.5, I'm using the standard web installer from Microsoft:http://www.microsoft.com/en-ca/download/details.aspx?id=30653
有人吗?知道该问题的解决方案或解决方法吗?
Does anyone know of any solution or workaround to this problem ?
以下是我的自定义操作的代码:
Here's the code for my Custom Action:
if ( hasDotNET45 = FALSE ) then
MessageBox( "Missing .NET 4.5 framework!", INFORMATION );
LAAW_SHELLEXECUTEVERB = "runas";
LaunchApplication( szSupportDir^"\\dotNetFx45_Full_setup.exe", "", "", SW_SHOWNORMAL, 100000, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_WAIT_INCL_CHILD );
Delay( 333 );
endif;
推荐答案
解决方案是首先提取的内容。 NET 4.5安装程序可执行文件,使用以下命令:
dotnetfx45_full_x86_x64.exe / x
The solution is to first extract the contents of the .NET 4.5 installer executable using the command:dotnetfx45_full_x86_x64.exe /x
然后,我可以在UI序列中使用自定义操作调用.NET安装程序的.MSI版本(不带setup.exe包装器!)
Then I can use a Custom Action in my UI sequence to invoke the .MSI version of the .NET installer (without it's setup.exe wrapper!)
msiexec.exe / i netfx_Full_x64.msi EXTUI = 1 / l * v Install.log
这完全解决了我原来的问题。
This fully resolves my original question.
这篇关于.NET 4.5嵌套安装的InstallShield的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!