1

我的安装程序需要重新分发 .NET 框架,但我不想有 setup.exe 包装器,所以我编写了一个自定义操作来启动 .NET 的 Web 安装程序,如果最终用户机器还没有它. 这适用于 .NET 4.0 和 .NET 3.5,但对于 .NET 4.5,.NET 安装程序报告“等待另一个安装完成”并失败 - 如果我的自定义操作在 Exec 序列中,此错误消息将是正确的,但是我特别将它放在 UI 序列的早期,以允许嵌套安装。

完全相同的 InstallShield 配置/代码适用于 .NET 3.5 和 .NET 4.0,但不适用于 .NET 4.5,我使用的是 Microsoft 的标准 Web 安装程序:http: //www.microsoft.com/en-ca/download /details.aspx?id=30653

有谁知道这个问题的任何解决方案或解决方法?

这是我的自定义操作的代码:

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;
4

2 回答 2

2
于 2013-05-22T13:59:15.013 回答
2

我很惊讶 .Net 4 和 3.5 甚至可以这样工作;在 MSI 安装程序中启动可能在后台使用 MSI 作为自定义操作的安装程序是个坏主意。

如果您想确保 .Net4.5(或任何其他软件)存在,您需要在启动安装程序之前链接它 ala Setup / Feature Prerequisites in Installshield或使用 LaunchCondition 表阻止安装程序继续,如果环境不符合要求。

于 2013-05-14T20:51:44.993 回答