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

1、下载Inno Setup

官网链接: link

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

1、新建打包文件

新建文件

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

这里我只选择了安装前显示条款
在这里插入图片描述

6、安装模式

管理员安装(所有用户均可安装)
仅限当前用户安装
命令覆盖安装
启动时选择安装模式
这里我默认管理员
在这里插入图片描述

7、选择安装语言

这里我选择的简体中文、默认没有的需要自己去网上找语言包
在这里插入图片描述

8、输出信息

输出文件位置
打包文件名称
打包后的文件图标
打包文件密码
在这里插入图片描述

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

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

在【Files】添加如下代码
在这里插入图片描述
注意这个路径是你自己离线环境的位置 最好放置到打包文件中 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;

最后点击运行即可
在这里插入图片描述

在这里插入图片描述
跑完就会生成.exe文件在你 第八步 指定的输出目录下

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Inno Setup打包MySQL 8.0.30,首先需要下载MySQL的安装程序Inno Setup软件。 1. 下载MySQL 8.0.30安装程序:进入MySQL官方网站,找到下载页面,下载MySQL 8.0.30的安装程序。保存到本地目录。 2. 下载Inno Setup软件:进入Inno Setup的官方网站,找到下载页面,下载最新版本的Inno Setup软件。保存到本地目录,并安装在你的电脑上。 3. 创建Inno Setup脚本文件:使用文本编辑器,新建一个空的文本文件。将以下代码复制到该文件中: ``` [Setup] AppName=MySQL 8.0.30 AppVersion=8.0.30 DefaultDirName={pf}\MySQL\MySQL Server 8.0 DefaultGroupName=MySQL AllowNoIcons=yes OutputDir=userdocs:Inno Setup Examples Output [Files] Source: "C:\path\to\mysql-8.0.30-installer.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall [Run] Filename: "{tmp}\mysql-8.0.30-installer.exe"; Parameters: "--install-server"; WorkingDir: "{tmp}"; StatusMsg: "Installing MySQL 8.0.30, please wait..." [UninstallDelete] Type: files; Name: "{app}\unins000.dat" Type: files; Name: "{app}\unins000.exe" [Tasks] Name: "desktopicon"; Description: "Create a desktop icon"; GroupDescription: "Additional tasks:"; Flags: unchecked [Icons] Name: "{commondesktop}\MySQL 8.0.30"; Filename: "{app}\{#MyAppExeName}" [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent ``` 4. 修改脚本文件中的路径:将代码中的"C:\path\to\mysql-8.0.30-installer.exe"修改为你自己保存MySQL安装程序的路径。 5. 保存脚本文件:将该文本文件保存为任意名称的脚本文件,并将文件后缀改为.iss。 6. 编译安装程序:在Inno Setup安装目录中,找到并运行Inno Setup编译器(iscc.exe)。在编译器中选择刚才保存的脚本文件,并点击编译按钮。将会生成一个名为setup.exe的安装程序。 7. 运行安装程序:双击生成的setup.exe文件,按照安装程序的提示和选项进行MySQL的安装。 通过以上步骤,你就可以使用Inno Setup打包MySQL 8.0.30,并生成一个可执行的安装程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值