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

如何在.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环境。

猜你喜欢

转载自blog.csdn.net/guigenyi/article/details/131641611