Inno Setup打包winform、wpf程序可判断VC++和.net环境

这篇具有很好参考价值的文章主要介绍了Inno Setup打包winform、wpf程序可判断VC++和.net环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、下载Inno Setup

官网链接: link

2、新建打包文件、开始打包

1、新建打包文件

Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

2、填写 应用名称、版本号、公司名称、公司官网

Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

3、选择安装路径 Custom是指定默认路径、Program Files folder是默认C盘根目录

Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

4、选择程序启动exe文件 以及Addfolder选择全部运行文件

Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

5、选择安装前显示文字 、安装中、安装后

这里我只选择了安装前显示条款
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

6、安装模式

管理员安装(所有用户均可安装)
仅限当前用户安装
命令覆盖安装
启动时选择安装模式
这里我默认管理员
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

7、选择安装语言

这里我选择的简体中文、默认没有的需要自己去网上找语言包
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

8、输出信息

输出文件位置
打包文件名称
打包后的文件图标
打包文件密码
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

至此不需要判断环境的设置完成、一路点击next就行

3、需要判断安装时的环境

在【Files】添加如下代码
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net
注意这个路径是你自己离线环境的位置 最好放置到打包文件中 D:\Desktop\打包\DELIN_SVIEW\OutPut\VC_redist.x64.exe

Source: "D:\Desktop\打包\DELIN_SVIEW\OutPut\VC_redist.x64.exe";DestDir:"{tmp}";DestName:"vcredistx64.exe";Flags:ignoreversion
Source: "D:\Desktop\打包\DELIN_SVIEW\OutPut\ndp472-kb4054530-x86-x64-allos-enu.exe";DestDir:"{tmp}";DestName:"dotnet472.exe";Flags:ignoreversion

在【Code】添加如下代码

[Code]

//vc++ 安装环境检查 plat:x64 x86
function IsVCPPDetected(version:string;plat:string): Boolean;
var 
    success: Boolean;
    key,versionkey:string;
    build,versionBuild:cardinal;
begin
    versionkey:=version;
    versionBuild:=0;

    case version of        
        '13':
            begin
            versionkey:='12.0';
            versionBuild:=40660;
            end;

        '15':
            begin
            versionkey:='14.0';
            versionBuild:=23026;
            end;
        '19':
            begin
            versionkey:='14.0';
            versionBuild:=28720;
            end;

    end;

    key:='SOFTWARE\Wow6432Node\Microsoft\VisualStudio\'+versionkey+'\VC\Runtimes\'+plat;

    success:=RegQueryDWordValue(HKLM, key, 'Bld', build);
    success:=success and (build>=versionBuild);

    result := success;
end;

//.net framework安装检查 —— 判断指定的.NET Framework版本及service pack是否已经安装
// 函数参数说明:
// 参数1:version -- 指定待判断的.NET Framework版本【下面列举了对应关系】:
//    'v1.1'          .NET Framework 1.1
//    'v2.0'          .NET Framework 2.0
//    'v3.0'          .NET Framework 3.0
//    'v3.5'          .NET Framework 3.5
//    'v4\Client'     .NET Framework 4.0 Client Profile
//    'v4\Full'       .NET Framework 4.0 Full Installation
//    'v4.5'          .NET Framework 4.5
//    'v4.5.1'        .NET Framework 4.5.1
//    'v4.5.2'        .NET Framework 4.5.2
//    'v4.6'          .NET Framework 4.6
//    'v4.6.1'        .NET Framework 4.6.1
//    'v4.6.2'        .NET Framework 4.6.2
//    'v4.7'          .NET Framework 4.7
//    'v4.7.1'        .NET Framework 4.7.1
//    'v4.7.2'        .NET Framework 4.7.2
//    `v4.8`          .NET Framework 4.8
//
// 参数2:service -- 指定待判断的service pack版本:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
function IsDotNetDetected(version: string; service: cardinal): boolean;
var
    key, versionKey: string;
    install, release, serviceCount, versionRelease: cardinal;
    success: boolean;
begin
    versionKey := version;
    versionRelease := 0;

    // .NET 1.1 and 2.0 embed release number in version key
    if version = 'v1.1' then begin
        versionKey := 'v1.1.4322';
    end else if version = 'v2.0' then begin
        versionKey := 'v2.0.50727';
    end

    // .NET 4.5 and newer install as update to .NET 4.0 Full
    else if Pos('v4.', version) = 1 then begin
        versionKey := 'v4\Full';
        case version of
        'v4.5':   versionRelease := 378389;
        'v4.5.1': versionRelease := 378675; // 378758 on Windows 8 and older
        'v4.5.2': versionRelease := 379893;
        'v4.6':   versionRelease := 393295; // 393297 on Windows 8.1 and older
        'v4.6.1': versionRelease := 394254; // 394271 before Win10 November Update
        'v4.6.2': versionRelease := 394802; // 394806 before Win10 Anniversary Update
        'v4.7':   versionRelease := 460798; // 460805 before Win10 Creators Update
        'v4.7.1': versionRelease := 461308; // 461310 before Win10 Fall Creators Update
        'v4.7.2': versionRelease := 461808; // 461814 before Win10 April 2018 Update
        'v4.8': versionRelease := 528040;
        end;
    end;

    // installation key group for all .NET versions
    key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + versionKey;

    // .NET 3.0 uses value InstallSuccess in subkey Setup
    if Pos('v3.0', version) = 1 then begin
        success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
    end else begin
        success := RegQueryDWordValue(HKLM, key, 'Install', install);
    end;

    // .NET 4.0 and newer use value Servicing instead of SP
    if Pos('v4', version) = 1 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
    end else begin
        success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
    end;

    // .NET 4.5 and newer use additional value Release
    if versionRelease > 0 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Release', release);
        success := success and (release >= versionRelease);
    end;

    result := success and (install = 1) and (serviceCount >= service);
end;

//安装包初始化                      
function CheckDotNet(): Boolean;
var Path:string ; 
    ResultCode: Integer; 
    Success:Boolean;
begin
    Success:=true;

    if not IsDotNetDetected('v4.7.2', 0) then 
    begin
        MsgBox('软件运行需要 Microsoft .NET Framework 4.7.2, 即将开始安装.NET Framework。', mbInformation, MB_OK);

        ExtractTemporaryFile('dotnet472.exe');
        Path:=ExpandConstant('{tmp}\dotnet472.exe')
        Exec(Path, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

        if not IsDotNetDetected('v4.7.2', 0) then
        begin
            if  MsgBox('.Net Framework4.7.2组件安装失败,无法运行程序,是否继续安装!',mbInformation,MB_YESNO) = IDYES then
            begin
                Success:=true
            end else 
            begin
                Success := false;
                result:=Success;
                Exit;
            end;
        end
        else
            Success := true;
    end
    else
        Success := true;

    result := Success;         
end;



//安装包初始化                      
function CheckVC(): Boolean;
var Path:string ; 
    ResultCode: Integer; 
    Success:Boolean;
begin
    Success:=true;

    if not IsVCPPDetected('19','x64') then
    begin
        MsgBox('软件运行需要 Microsoft Visual C++ 2019 Redistributable x64, 即将开始安装vc redist x64', mbInformation, MB_OK);

        ExtractTemporaryFile('vcredistx64.exe');
        Path:=ExpandConstant('{tmp}\vcredistx64.exe')
        Exec(Path, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

        if not IsVCPPDetected('19','x64') then
        begin
            if MsgBox('Microsoft Visual C++ 2019 Redistributable x64组件安装失败,部分功能无法使用,是否继续安装!',mbInformation,MB_YesNo) = IDYES then
            begin
                Success:=true;
            end else begin 
                Success := false;
                result:=Success;
                Exit;
            end;
        end
        else begin end;
    end;

    result := Success;         
end;

function InitializeSetup: Boolean;
begin
  Result := CheckDotNet();
  Result := CheckVC();
end;

最后点击运行即可
Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net

Inno Setup打包winform、wpf程序可判断VC++和.net环境,wpf,c++,.net
跑完就会生成.exe文件在你 第八步 指定的输出目录下文章来源地址https://www.toymoban.com/news/detail-599725.html

到了这里,关于Inno Setup打包winform、wpf程序可判断VC++和.net环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Visual Studio 2022 WinForm/Wpf打包安装程序

    方法1.手动下载安装包: Microsoft Visual Studio Installer Projects 2022 方法2.Visual Studio中安装 菜单栏中选中【扩展】-【管理扩展】-【联机】中搜索Microsoft Visual Studio Installer并安装 在当前解决方案下添加-新建项目-Setup Project 项目添加成功之后,将需要打包的项目生成后的bin目录下的

    2024年02月04日
    浏览(73)
  • Inno SetUp安装包:如何在程序安装时卸载驱动程序

    如果您想通过命令行卸载.INF文件的驱动程序,您需要使用PnPUtil命令。以下是一个示例: pnputil /delete-driver oem0.inf /uninstall 在这个示例中, oem0.inf 应该被替换为您要卸载的驱动程序的.inf文件。使用 pnputil /enum-drivers 命令可以列出已安装驱动程序的列表。 请注意,你需要以管理

    2024年02月16日
    浏览(43)
  • 如何使用Inno Setup制作Unity构建程序的Windows安装程序

    必须包括: Data文件夹(xxx_Data) Mono文件夹(MonoBleedingEdge) 打包的应用程序文件(xxx.exe) Unity播放器dll文件(UnityPlayer.dll) 可选包括: Unity程序崩溃处理(UnityCrashHandler64.exe) 下载地址:https://jrsoftware.org/isdl.php 找到Stable Release,点击Download Sites的“US”下载 运行安装程序

    2024年03月17日
    浏览(56)
  • Inno Setup简介

    简易打包: 选择使用向导创建一个新的脚本 填好图中的安装包名称、安装版本、安装包发布者、安装包的相关网站,安装包名称和版本是必填的,剩下那两个可以选填。 第一个是应用程序目标基本文件夹可以选择,第二个是应用程序文件夹名称,就是安装时新建的安装目录

    2024年02月09日
    浏览(46)
  • 一个.Net强大的Excel控件,支持WinForm、WPF、Android【强烈推荐】

    推荐一个强大的电子表单控件,使用简单且功能强大。 这是一个开源的表格控制组件,支持Winform、WPF和Android平台,可以方便的加载、修改和导出Excel文件,支持数据格式、大纲、公式计算、图表、脚本执行等、还支持触摸滑动,可以方便地操作表格。 总的来说是一个可以快

    2024年02月07日
    浏览(54)
  • Inno Setup实现软件开机自动运行的两种方法

    Inno Setup实现软件开机自动启动的两种方法 在许多情况下,我们希望我们的软件能够在操作系统启动时自动启动。对于 Windows 操作系统,可以通过将程序添加到启动组或在注册表的 Run 项中创建值来实现此目的。 有两种不同的方法可以做到这一点: 方法一:在启动组中创建快

    2024年02月06日
    浏览(55)
  • 有关 Inno Setup 的实践:检查并安装依赖,运行时退出安装或卸载

    如题,检测 Microsoft Visual C++ 2015 Redistributable (x64) 依赖并安装,若程序安装或卸载时应用运行中将检测并退出 所需依赖 Microsoft Visual C++ 2015 Redistributable (x64) Microsoft 官网下载 psvince.dll Github 下载 编辑 iss 文件

    2024年01月24日
    浏览(35)
  • VS2019 打包桌面应用程序详细步骤,包含运行环境(.NET Framework)

    本篇教程基于VS扩展插件Microsoft Visual Studio Installer Projects工具来打包, 在VS工具中进行安装,菜单栏【扩展(X)】 -- 【管理扩展】,在界面中输入Installer,找到Microsoft Visual Studio Installer Projects,点击下载 在解决方案上右键 –【添加】--【新建项目】– 【Setup Project】,

    2024年02月04日
    浏览(61)
  • 补齐 windows 运行库和运行环境(VC++、DirectX、.Net)

    安装一些应用时,可能会缺少各种库文件导致软件崩溃报错。缺少的主要有三类:vc++、directx、.net。 这是最基本的库。 下载链接: 最新受支持的 Visual C++ 可再发行程序包下载 DirectX(Direct eXtension)是由微软公司创建的多媒体编程接口。 简单来说这个是和图形图像有关的。启

    2024年02月15日
    浏览(44)
  • C#如何打包EXE程序生成setup安装文件

    项目结束之后,有需要将winForm程序打包成.exe文件提供给用户。 这里记录一下打包过程。 1:首先获取打包插件,如果你的VS已经安装,忽略此步骤。 点击 工具-扩展和更新,选择联机,搜索installer,安装。 Vs2010以上版本基本上都有安装。 2:创建一个安装向导项目 创建过程

    2024年02月12日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包