这是封装出来的针对.NET环境安装的精简流程

根据流程新建一个配置文件

教程都是很简单的,可以参考《InnoSetup 客户端程序打包教程

添加.NET安装基本的函数及辅助方法

在[Setup]模块下引用几个辅助文件

 1 //import dependency for .net
2 //isxdl operation
3 #include "dependency\isxdl.iss"
4 //;TYPES AND VARIABLES
5 #include "dependency\products.pas"
6 //about .net versions
7 #include "dependency\dotnetfxversion.iss"
isxdl.iss -- 引用了isxdl.dll并添加文件下载、安装函数
products.pas -- 版本的安装过程
dotnetfxversion.iss -- .net版本信息等相关函数

添加.NET版本引用及启动执行

以.net4.5.iss为例,添加了版本的信息及下载地址等(下载过程调用上个步骤中product.pas函数)

 1 [CustomMessages]
2 dotnetfx45_title=.NET Framework 4.5.2
3 dotnetfx45_size=68 MB
4
5 [Code]
6 const
7 dotnetfx45_url = 'http://download.microsoft.com/download/B/4/1/B4119C11-0423-477B-80EE-7A474314B347/NDP452-KB2901954-Web.exe';
8
9 procedure dotnetfx45(minVersion: Integer);
10 begin
11 if (dotnetfxspversion(NetFx4x, '') < minVersion) then
12 AddProduct('dotnetfx45.exe',
13 '/lcid ' + CustomMessage('lcid') + ' /passive /norestart',
14 CustomMessage('dotnetfx45_title'),
15 CustomMessage('dotnetfx45_size'),
16 dotnetfx45_url,
17 false, false, false);
18 end;

在[Setup]中添加要依赖的.NET版本:

1 [Setup]
2 //add .net4.5
3 #include "dependency\.net versions installation\dotnetfx45.iss"
4 #include "dependency\.net versions installation\dotnetfx46.iss"

添加定制语言项,如果安装包需要支持多语种,可以额外引用其它语言项进行选择。

 1 [CustomMessages]
2 DependenciesDir=MyProgramDependencies
3 WindowsServicePack=Windows %1 Service Pack %2
4 //固定英文安装语言
5 lcid=1033
6 depdownload_memo_title=Download dependencies
7 depinstall_memo_title=Install dependencies
8 depinstall_title=Installing dependencies
9 depinstall_description=Please wait while Setup installs dependencies on your computer.
10 depinstall_status=Installing %1...
11 depinstall_missing=%1 must be installed before setup can continue. Please install %1 and run Setup again.
12 depinstall_error=An error occured while installing the dependencies. Please restart the computer and run the setup again or install the following dependencies manually:%n
13 isxdl_langfile=""

安装.NET版本:

1 [Code]
2 function InitializeSetup(): Boolean;
3 begin
4 dotnetfx45(50); // install if version < 4.5.0
5 dotnetfx46(60); // install if version < 4.6.0
6 Result := true;
7 end;

需要什么版本,直接加一行代码就行~

Demo案例

点击安装后,会自动检测.NET环境,并执行缺失环境的安装。

安装成功后,就可以正常启动咯~

demo案例详见 https://github.com/Kybs0/InnoSetupAddNETVersionsDemo

参考文章:

InnoSetup打包 添加.NET环境安装的更多相关文章

  1. Sencha Toucha 2 —1.环境安装配置、在线打包、离线打包

    环境安装配置        1. 下载 1.1     Sencha Touch 下载 http://cdn.sencha.com/touch/sencha-touch-2.2.1-gpl.zip 1 ...

  2. vs.net打包(自动检测环境并安装.net framwork)

    vs.net打包程序或者制作安装程序时自动检测环境并安装.netframwork的设置方法之前我看过文档也做过,但是过一段时间又忘了,现在终于又找到方法了,还是把这个方法写下来吧,方便自己也方便大家将 ...

  3. QT环境安装VS2013(系统环境里设置QTDIR,并添加VS2013的BIN目录)

    QT环境安装VS2013 文件名 1.qt5.5.1 qt-opensource-windows-x86-msvc2013-5.5.1.exe 2.qt vs插件 3.qt-vs-addin-1.2. ...

  4. Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例

    Java程序导出成.jar文件.生成.exe可执行文件及打包成可执行安装程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 需要准备的软件: jdk, ...

  5. python新手之一环境安装

    今天开始学习python,首先环境安装 1.在https://www.python.org/downloads/下载python2.X或者3.X(ps:这里建议下载32位的python ,因为64位p ...

  6. Java基础-配置开发环境-安装JDK

    Java基础-配置开发环境-安装JDK 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机基础知识 1>.计算机的组成 计算机有硬件与软件组成. 2>.硬件: 硬 ...

  7. golang环境安装和配置

    go中环境安装 前言 最近在工作中需要新配置go环境,每次都要去网上查找教程,浪费时间,那么就自己总结下. 下载安装 linuxGolang官网下载地址:https://golang.org/dl/1 ...

  8. 无网环境安装docker之--rpm

    总体思路:找一台可以联网的linux,下载docker的RPM依赖包而不进行安装(yum localinstall),将所有依赖的rpm环境打包好,再在无网环境中解压逐一安装(rpm:  --forc ...

  9. 用Docker打包Python运行环境

    虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 ...

随机推荐

  1. Pytorch 60实例

    1 初识PyTorch¶ 1.1 张量 1.导入pytorch包 In [1]: import torch 2.创建一个未初始化的5x3张量 In [3]: x = torch.empty(5, 3) ...

  2. 三种遍历的方法(map和forEach的区别)

    一. for循环 arr[index]可以改变原数组 二. forEach方法 forEach方法的返回值是一个undefined: 2. 在循环体内改变item的值不会影响原数组,而是只在循环体内生 ...

  3. win10edge浏览器个人账户退出登录后再次登录自动登录问题

    edge浏览器退出登录后,再次点击登录以同步数据会自动登录,可查看书签等个人数据 解决方法: 先在浏览器里面退出账户. 1.设置--电子邮件和账户--管理 2.登录后--安全--安全仪表板--高级安全 ...

  4. k8s中label和selector的基本概念以及使用方法

    概述 在k8s中有一个非常核心的概念,就是label(标签),以及对label的使用,label selector label(标签) 定义:   标签这个概念和现实生活中的标签其实没有什么区别,如, ...

  5. lnmp重新安装mysql

    安装mysql好长时间,一直没去管,后来一直频繁重启,各种网上找方案去解决,最后问题太异常,一顿操作猛如虎之后把mysql彻底搞垮,无奈只能进行重装. whereis mysql mysql: /us ...

  6. [复现]陇原战"疫"2021网络安全大赛-PWN

    bbbaby 控制__stack_chk_fail,栈溢出 from pwn import * context.os = 'linux' context.log_level = "debug ...

  7. [picoCTF]Scavenger Hunt write up

    http://mercury.picoctf.net:5080/,这个网站周围隐藏着一些有趣的信息.你能找到它吗? 根据提示: 您应该有足够的提示来查找文件,不要运行暴力破解程序. 点击链接,进入页面 ...

  8. 存算分离实践:JuiceFS 在中国电信日均 PB 级数据场景的应用

    01- 大数据运营的挑战 & 升级思考 大数据运营面临的挑战 中国电信大数据集群每日数据量庞大,单个业务单日量级可达到 PB 级别,且存在大量过期数据(冷数据).冗余数据,存储压力大:每个省公 ...

  9. 分析document文档中script标签获取抖音无水印视频

    思路分析 使用 playwright 模拟浏览器打开分享链接 获取 播放页面 html 信息 解析 播放页面的 video标签,video标签的src属性就是视频的地址 这种模式会触发抖音的风控机制 ...

  10. 从零开始学Java系列之如何使用记事本编写java程序

    前言 在上一篇文章中,壹哥给大家介绍了Java中的标识符及其命名规则.规范,Java里的关键字和保留字,以及Java中的编码规范. 我们在之前编写案例时,使用的开发工具都是windows自带的txt记 ...