在Windows 8上使用Inno Setup安装.Net 3.5

4
我一直在使用Inno Setup检查并安装.NET 2.0框架,用于我的某个应用程序。它通过检查注册表键并简单地下载.NET安装程序来安装,然后再安装我的应用程序,工作得非常顺畅。
据我了解,在Windows 8中这种方法不再适用。 Windows 8将.NET 2.0捆绑在.NET 3.5包中,可以通过W8的“安装Windows功能”应用程序启用。我希望通过Inno触发安装Windows功能应用程序以启用.NET 3.5支持,而不是下载.NET 2.0安装程序。你有什么好主意吗?
2个回答

5

解决方案

感谢 @Miral 的建议。

添加了一个额外的检查以确定是否正在运行Windows 8:

GetWindowsVersionEx(Version);
if (Version.Major=6) and (Version.Minor=2) then
  begin
    Windows8:=true;
  end;

然后在NextButtonClick事件中包含此代码,并检查CurPage是否为wpReady:

 if dotNetNeeded and Windows8 then
    begin
      Exec('Dism', ' /online /enable-feature /featurename:NetFx3 /All /NoRestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
    end;

请记住,此版本检查将对 Windows 的下一个版本非常脆弱。但另一方面,也不能保证 dism 命令在 Windows 的下一个版本上能够正常工作。 - Miral

5

据微软称, 尝试运行redistributable应该会自动在Windows 8上触发内部激活功能。因此,如果您将dotnetfx35 redistributable与安装程序捆绑在一起,则不需要更改任何内容。

但是,如果您需要按需下载redistributable,则更有效的方法是检测Windows 8或更高版本,并通过以下命令行触发安装:

Dism /online /enable-feature /featurename:NetFx3 /All

在Inno中,您应该通过PrepareToInstall事件函数内的Exec来执行此操作。

这似乎运行得很好。弹出的DOS窗口看起来有点不友好,也不太提供信息。可惜没有办法触发Windows图形界面安装程序。 - nemmy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接