InnoSetup安装时先静默安装VS运行库并判断系统版本

这篇具有很好参考价值的文章主要介绍了InnoSetup安装时先静默安装VS运行库并判断系统版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[Setup]

ArchitecturesInstallIn64BitMode=x64

[Files]

Source: "vc_redist.x64.exe"; DestDir: "{app}"; Check: NeedInstallVC9SP1
Source: "vc_redist.x86.exe"; DestDir: "{app}"; Check: NeedInstallVC9SP1

[Code]
var
  vc9SP1Missing: Boolean;

function NeedInstallVC9SP1(): Boolean;
begin
  Result := vc9SP1Missing;
end;
function InitializeSetup(): Boolean;
var 
  version: Cardinal;
begin
  if IsWin64 then begin
    // 64-bit OS                  {EF1EC6A9-17DE-3DA9-B040-686A1E8A8B04} 为 vc_redist.X64 GUID
    if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{EF1EC6A9-17DE-3DA9-B040-686A1E8A8B04}', 'Version', version) = false then begin
      vc9SP1Missing := True;
    end;
  end
  else begin
    // 32-bit OS                  {BE960C1C-7BAD-3DE6-8B1A-2616FE532845} 为 vc_redist.X86 GUID
    if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BE960C1C-7BAD-3DE6-8B1A-2616FE532845}', 'Version', version) = false then begin
      vc9SP1Missing := True;
    end;
  end;
  Result := True;
end;

[Run]
//静默安装vs2015
Filename: "{app}\vc_redist.x64.exe"; Parameters: /q; StatusMsg: "Installing Microsoft Visual C++ Runtime …"; Flags: skipifdoesntexist;Check: NeedInstallVC9SP1  and IsWin64()
Filename: "{app}\vc_redist.x86.exe"; Parameters: /q; StatusMsg: "Installing Microsoft Visual C++ Runtime …"; Flags: skipifdoesntexist;Check: NeedInstallVC9SP1  and not IsWin64()

其中,运行库的GUID可以解压 vc_redist.exe,在文件0中搜索ProductCode,会搜到两个,我们需要 ProductCode 为 RollbackLogPathVariable = vcRuntimeAdditional 的那个GUID

目前仍有一个问题,即使系统已经安装了对应的vs版本,安装程序在完成安装之前仍会去运行vc_redist(这是使用了64位模式导致的:ArchitecturesInstallIn64BitMode,如果不判断系统版本就不会有这问题)

只判断x86注册表的示例代码:

#define MyVSGUID "{EFC21A37-5640-4BE1-981A-2FD3EDA1D893}";

[Files]

Source: "vc_redist.x86.exe"; DestDir: "{app}"; Check: NeedInstallVC9SP1

[Code]
var vc9SP1Missing: Boolean;
function NeedInstallVC9SP1(): Boolean;
begin
Result := vc9SP1Missing;
end;
function InitializeSetup(): Boolean;
var version: Cardinal;
begin                                                                           
if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyVSGUID}', 'Version', version) = false then begin
vc9SP1Missing := true;
end;

//version值为0,表示未安装此运行库
//MsgBox('version值为:'+IntToStr(version),mbInformation, MB_OK);
result := true;

[Run]
Filename: "{app}\vc_redist.x86.exe"; Parameters: /q; StatusMsg: "正在安装vc++运行时..."; Flags: skipifdoesntexist;Check: NeedInstallVC9SP1

判断.net4是否安装

[code]

var  dotNetMissing: Boolean;

function NeedInstallDotNet(): Boolean;
begin
Result := dotNetMissing;
end;

if(RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\Policy\v4.0')) = false then begin
dotNetMissing := true;
end;文章来源地址https://www.toymoban.com/news/detail-787054.html

到了这里,关于InnoSetup安装时先静默安装VS运行库并判断系统版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • InnoSetup 安装程序设置环境变量

    InnoSetup 通过写入注册表值实现安装程序设置系统全局环境变量 环境变量以字符串值存储在注册表中,因此可以使用 [Registry] 区段操作它们。系统范围的环境变量位于: \\\"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment\\\" 特定于用户的环境变量位于: \\\"HKEY_CURRENT_USERE

    2023年04月23日
    浏览(35)
  • 【MySQL8入门到精通】基础篇- Linux系统静默安装MySQL,跨版本升级

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

    2023年04月09日
    浏览(51)
  • 【干货】Android系统定制基础篇:第三部分(Android静默安装、Android支持usb打印机)

    一些产品要求APP在升级时能够实现静默安装,而无需弹出安装界面让用户确认。这里提出两种实现方案: 方案一 APP调用『pm』命令实现静默安装,此方案无须修改Android源码,但需要root权限。 方案二 修改Android PackageInstaller 源码,增加Intent参数来指定是否要静默安装,同时支

    2024年02月10日
    浏览(51)
  • VS2019打包程序安装后无法运行

    C#实践 问题:做Winform项目,用VS2019打包程序,安装后无法运行。 现象1: 应用程序: xxxx.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止。 异常信息: System.FormatException 在 System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalizat

    2024年02月04日
    浏览(42)
  • 『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 一般性的selenium会打开浏览器页面,展示图形化页面给我们看,我们都应该知道命令行式的程序肯定比这种渲染图形化界面的程序快速高效。为了一定程度上缓解selenium慢的问题,我们可以采

    2024年02月07日
    浏览(123)
  • vscode安装配置opencv+eigen库并使用

    博主之前都是使用Visual Studio 2017进行c++开发,目前小组开发统一使用vscode 进行开发和维护,因此去踩坑搭建本地的一个vscode开发环境。以下为搭建环境的整个过程记录。 vscode 下载地址:vscode下载 Cmake-3.26.0-rc3 下载地址:CMake MinGW-W64 GCC-7.3.0,下载地址如下:Mingw64 opencv4.5.3 so

    2024年02月04日
    浏览(127)
  • 程序静默安装实现方式探究

    目录 1、静默安装Microsoft Visual C++ 发行程序包VC_redist.x86.exe / VC_redist.x64.exe

    2024年02月15日
    浏览(46)
  • Oracle database 静默安装 oracle 11g 一键安装

    Linux :centerOS 7 oracle :11.2.0 runInstaller应答文件 /database/response/db_install.rsp netca应答文件 /database/response/netca.rsp dbca应答文件 /database/response/dbca.rsp 解压oracle安装包后在生成database目录 静默安装需先编辑对应应答文件 编辑完成后执行安装程序指定对应应答文件 基于oracle可以实现静

    2024年02月13日
    浏览(51)
  • Linux安装Oracle11g(无图形界面下的静默安装)

    创建组和用户 创建oracle安装目录 关闭防火墙 优化系统内核参数 编辑 /etc/sysctl.conf 文件,在文件尾添加如下内容: 执行 sysctl -p 使修改生效 对oracle用户设置限制 编辑 /etc/security/limits.conf 文件,在文件尾添加如下内容: 设置用户变量 编辑 /home/oracle/.bash_profile 文件,在文件尾

    2024年04月14日
    浏览(40)
  • 在 Ubuntu 20.04 上静默安装matlab 实践

    需求: 某服务端业务需要调用 matlab 为方便迭代发布,需要支持基于 docker 的自动化部署(CD) 一键安装,使用方便 官方镜像仅支持网络验证 官方镜像仅支持基础功能版、深度学习版两个版本,功能不全 需要将编写好的 matlab 程序打包成对应框架(如:python、c++ 等)SDK。存

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包