如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境

news2024/9/28 1:11:41

如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境

前言

​ Microsoft Visual Studio Installer Projects是一组用于创建安装程序的工具,它是Microsoft Visual Studio的扩展。这些工具允许开发人员在Visual Studio中创建和定制安装程序,以便将他们的应用程序打包并分发给用户。
​ 使用Visual Studio Installer Projects,开发人员可以通过可视化界面来配置安装程序的各种设置,并且可以使用自定义脚本和自定义操作来满足特定的安装需求。该工具集成在Visual Studio开发环境中,使开发人员能够在同一环境中进行应用程序的开发和安装程序的创建。
​ Visual Studio Installer Projects支持创建多种类型的安装程序,包括MSI(Microsoft Installer)和ClickOnce。MSI是一种常见的安装程序格式,它提供了更高级的功能和灵活性,可以执行更复杂的安装操作。ClickOnce是一种更简单的安装方式,适用于部署和更新较小规模的应用程序。

​ 本文主要介绍在如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境。

新建一个.NET WinForm 项目

为方便演示,我这里新建一个 WinForm APP (.NET Framework) 控制台程序。如图所示:

image-20230710101618708

随便放点控件上去。便于演示

image-20230710101935565

安装 Installer Project 插件

VS -> 扩展 -> 管理扩展 -> 联机 -> 搜索"Install project" ->选择Microsoft Visual Studio Installer Projects 下载安装:

image-20230707141756448

新建安装项目(Setup Project)

VS -> 选择解决方案右键-> 添加 -> 新建项目 -> 搜索模板 “Installer”

image-20230707140740302

安装包类型用途
Setup Projet创建一个可以添加文件的 Windows Installer 项目
Web Setup Projet创建一个可以添加文件的 Windows Installer Web 项目
Merge Module Project创建一个可以添加文件的 Windows Installer 合并模块项目
Setup Wizard借助安装向导创建 Windows 安装程序项目

这里我们选择 Setup Project

image-20230710102200057

设置 WinForm Project 输出到Setup Project

本步骤主要演示设置.net 项目与安装程序的关联,这里我以项目输出为例进行演示。最终安装包打包过程中会自动将.net 项目生成的DLL、EXE等release输出文件输出到安装包中。当然根据你的业务需要,也可以往安装包中添加其他类型的文件、程序集等。

VS -> 右键Setup -> Add -> 项目输出

设置如下配置,输出类型选择Primary output(主输出)

image-20230710102233371

NET Framework 安装包

VS -> 右键Setup -> 属性 -> 进入Setup属性页对话框 -> Debug -> Prerequisite(先决条件)

image-20230710102401703

注意:Debug和Release需要设置相同的先决条件,以免出错。

进入先决条件对话框

image-20230710102750422

选择你要的 .Net 环境 ->指定系统必备组件的安装位置为:从与我应用程序相同的位置下载系统必备组件 ->确定->应用->确定

生成安装包

VS -> 选择Release模式 -> 右键Setup -> 生成

生成报错及原因分析:

首次生成会出现如下报错。

image-20230707145732498

这里面主要有两个问题,一个warning,一个error。我们分别来解决:

1. 警告(Warning)的解决

警告信息如下:

WARNING: The version of the .NET Framework launch condition ‘.NET Framework 4.7.2’ does not match the selected .NET Framework bootstrapper package. Update the .NET Framework launch condition to match the version of the .NET Framework selected in the Prerequisites Dialog Box.

解决方法:

VS -> 右键Setup -> 在文件资源管理器中打开文件夹 -> 用文本编辑器打开 Setup.vdproj -> 搜索4.7.2,改成 4.8 ->重新生成,警告消失

image-20230707150357552

运行结果如下,可以看到Warning消失,只剩下Error。

image-20230707150552331

2. 报错(Error)的解决

报错信息如下:

ERROR: To enable ‘Download prerequisites from the same location as my application’ in the Prerequisites dialog box, you must download file ‘DotNetFX48\NDP48-x86-x64-AllOS-ENU.exe’ for item ‘Microsoft .NET Framework 4.8 (x86 and x64)’ to your local machine. For more information, see http://go.microsoft.com/fwlink/?LinkId=616018.
ERROR: General failure building bootstrapper
ERROR: Unrecoverable build error - 0x80004005

错误原因分析:

微软官方解释:How to: Include Prerequisites with a ClickOnce Application

在你将先决条件软件与ClickOnce应用程序一起发布之前,你必须首先将这些先决条件的安装程序包下载到你的开发计算机。当你发布一个应用程序并选择从与我的应用程序相同的位置下载先决条件时,如果安装包不在软件包文件夹中,就会出现错误。

解决方法:

使用 Package.xml 添加安装程序包

查看所需安装的.NetFramework PackageFile 信息

打开 Packages 文件夹

默认情况下,该路径在64位系统上为 C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages 。如图
image-20230707151206582

查看先决条件文件夹的配置信息

打开要添加的先决条件的文件夹,.net framework 4.8 对应文件夹:DotNetFX48。

image-20230707152142904

然后用文本编辑器打开 Product.xml 查看我们需要手动下载的文件。

如图所示,可以看到我们需要手动下载的是两个PackageFile文件:

NDP48-x86-x64-AllOS-ENU.exeNDP48-Web.exe

image-20230707152314814

下载 .NET Framework PackageFile

我们可以去百度上把几个文件下载下来放在DotNetFX48目录下就可以了。

也可以去微软官方地址下载:下载 .NET Framework 4.8

image-20230710104342307

image-20230710105145373

下载中文语言包

进入zh-Hans文件夹:

image-20230707153259215

在文本编辑器中,打开 Package.xml 文件:

image-20230707153345926

image-20230710105343084

我们继续前往 .NET Framework 4.8 下载中文(简体)语言包,并放到 \Packages\DotNetFX48\zh-Hans目录下

image-20230710110127909

重新生成,error消失。

image-20230710110319373

生成出来以后会多一个DotNetFX48的文件夹。

image-20230707155442355

这样一来安装包就会自动安装.Net Framework环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java开发基础系列(二):数据类型

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: Java开发基础系列(二):数据类型 ⏱️ 创作时间: 2023年07月…

生产消费者模型

生产消费者模型概念 生产消费者模型实际上就是通过一个容器,将生产者和消费者之间的强耦合问题解决掉。 没有使用生产者消费者模型时,生产者和消费者之间直接相互联通,两者之间强耦合,若是一方更换,那另一方也需要随之…

在 Jetpack Compose 中使用 ViewPager

简介 Jetpack Compose 是一个现代化的,声明式的 UI 工具包,让我们可以更方便地构建原生 Android UI。在本篇文章中,我们将会讨论如何在 Jetpack Compose 中使用 ViewPager。 什么是 ViewPager? ViewPager 是一个提供左右滑动切换视图的 U…

DynaSLAM代码详解(2) — Mask RCNN物体检测框架

目录 2.1 前言 2.2 Mask R-CNN优点 2.3 Mask R-CNN框架解析 (1) Mask R-CNN算法步骤 (2) Faster-R-CNN (3) FCN (4) ROIPooling和ROIAlign的分析与比较 (5) Mask R-CNN损失 参考链接: (1)Mask R-CNN网络详解_fcn太阳花的小绿豆_太…

Java开发专家阿里P6-P7面试题大全及答案汇总(持续更新)二十七、Ribbon和Feign的区别...

一、CPU100%问题如何快速定位 答案 1.执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 2.找到最耗CPU的线程 top -Hp 10765 ,显示一个进程的线程运行信息列表 键入P (大写p),线程按照CPU使用率排序 …

IDEA集成Maven

目录 配置Maven环境 创建Maven项目 Maven坐标 导入Maven项目 Maven依赖管理(核心) 配置Maven环境 两种方法 每没创建一个maven项目都需要在项目中配置一遍在所有设置中进行全局设置,适用于所有的maven项目 步骤 在idea的初始界面中找到所…

ASEMI整流桥2W10的结构特点和应用领域

编辑-Z 整流桥2W10是一种常用的电子元件,用于将交流电转换为直流电。本文将从工作原理、结构特点、应用领域和发展趋势四个方面对整流桥2W10进行详细阐述。 工作原理 整流桥2W10是由四个二极管组成的桥式整流电路。当输入的交流电信号通过整流桥时,根据…

文心大模型3.5完成内测

据报道,日前,百度文心大模型3.5版本已经完成内测应用,并在三大公开测试集上展现了出色的表现,其综合能力评测得分已经超过ChatGPT,部分中文能力甚至超越了GPT-4。 根据《中国科学报》的报道,3月份&#xf…

2023年全球零信任现状报告发布丨面临集成挑战,如何突破知易行难?

近日,专注网络与安全融合的全球网络安全领导者Fortinet(NASDAQ:FTNT)宣布发布《2023年全球零信任现状报告》及其调查发现。该报告揭示了零信任安全当前部署和实施现状,以及 IT 团队在应对后疫情时代的混合办公模式的安…

还找不到好用的UI设计工具,来看这篇

即时设计是一个基于云的在线协作工具,专门为国产设计团队打造。与其它在线协作工具相比,即时设计具有更强的项目团队合作功能,也更容易实现上手操作。它可以帮助企业或团队从0到1的创建、测试和交付的设计项目。在即时设计的帮助下&#xff0…

更快地分割任何事物:面向移动应用的轻量级Sam

文章目录 摘要1、简介2、相关工作3、适合移动设备的SAM3.1、背景和项目目标3.2、提出方法 4、实验4.1、实验设置4.2、MobileSAM的性能与原版SAM相当4.3、MobileSAM优于FastSAM 5、结论 摘要 https://arxiv.org/pdf/2306.14289v2.pdf 分割任何事物模型(SAM)因其令人印象深刻的零…

健身器材BS EN ISO 20957标准

健身器材出口欧洲需要符合CE认证的 BS EN ISO 20957标准,而且 BS EN ISO 20957规定了固定训练设备的安全要求和试验方法,也就是固定训练设备在使用过程中的一般安全要求。这包括用于体育协会,教育机构,酒店,体育馆&…

Lazada官方运营服务商分享;店铺没流量?优化好标题是关键

一.商品标题简介 Q:商品标题是什么? A:商家上传商品时,填写的标题,会展示在PDP页面上端 Q:为什么商品标题很重要? A:商品标题可根据买家搜索的关键字来将商品呈现在搜索结果中,因此,需要在商品标题中尽…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪,日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会,期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道,引发三地警务机关的高度关注…

ceph故障解决

今天一早发现ceph集群出错,根据报错,可以判断出是时间不同步和一个存储池没有起来导致的 一、解决时间同步 1.1检查时间同步的ntp服务是否启动(发现有两台服务器的ntp服务关闭了) systemctl status ntp1.2 重启ntp服务(重启服…

超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?

AI已来,未来已来! 来势汹汹的人工智能,如同创世纪的洪水,正在全世界的范围内引发一场史无前例的科技革命。AI正在改变世界!而我们正是这场巨变的见证者。 今天我们要介绍的内容就是:如何利用AI工具Stable Diffusion&a…

python接口自动化(二十六)--批量执行用例 discover(详解)

简介  我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方…

【Docker】Docker的部署含服务和应用、多租环境、Linux内核的详细介绍

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

SSH 远程口令登录及免密登录

简介: SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机使用SSH协议登录另一台计算机我们就可以认为这种登录时安全的,即使被中途截获,密码也不会泄露 安装 1.服务器安装OpenSSH(CentOS系统默认安装了openssh) 1.yum install op…

如何利用Java实现 AI 人脸融合特效

Java实现AI人脸融合特效 项目背景AI 人脸融合特效的原理代码实现第一步:调用token接口人脸融合部分工具类最终效果图 项目背景 最近自从chat-gpt爆火以来,AI技术在人工智能领域持续迭代的创新,为人们的生活带来了许多震撼的应用。比如其中的…