将ZIP文件添加到程序集资源文件然后在运行时解压文件
时间:2022-04-29
本文章向大家介绍将ZIP文件添加到程序集资源文件然后在运行时解压文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天做安装打包程序研究,之前同事将很多零散的文件发布成一个安装文件夹给用户,这样体验不好,我希望将所有文件打包成一个.net程序,运行此程序的时候自解压然后执行后续的安装步骤。
解决过程:
1,将所有零散文件使用WinRAR工具,打包成一个ZIP格式文件,比如 SetupRes.zip
2,新建一个控制台或者WinForms程序项目作为“打包项目”;
3,将SetupRes.zip文件放到打包程序项目的根目录下面,选择此文件,属性-》嵌入的资源;
4,添加如下代码:
class Program
{
static void Main(string[] args)
{
//解压嵌入式资源示例
string currNamespace = "ConsoleApp1";
string fileName = "SetupRes.zip";
string resourceName = string.Format("{0}.{1}", currNamespace, fileName);
Stream so = Assembly.GetEntryAssembly().GetManifestResourceStream(resourceName);
if (so != null)
{
WriteStreamFile(fileName, so);
System.IO.Compression.ZipFile.ExtractToDirectory(fileName, ".\");
Console.WriteLine("文件解压成功!");
}
Console.Read();
}
private static void WriteStreamFile(string fileName, Stream stream)
{
FileStream fs = File.OpenWrite(fileName);
int bytesRead = 0;
byte[] buffer = new byte[65536];
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
}
stream.Close();
fs.Close();
}
}
5,编译,运行,发现运行目录解压出来了ZIP文件和解压后的目录。
以后做.NET程序的安装包,就方便了!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【原创】Java并发编程系列32 | 阻塞队列(下)
- 深入理解swap交换分区理解及扩存
- client-go 之 Reflector 源码分析
- Vue.js点击按钮弹出隐藏菜单的几种方式
- 【Vue.js】Vue.js组件库Element中的单选框、多选框、输入框和计数器
- 【Vue.js】Vue.js组件库Element的基础用法
- 常见的图像处理技术
- docker浅入深出续
- 【21期】你能说说Java中Comparable和Comparator的区别吗
- 昨天晚上熬夜整理的Java注解相关学习笔记
- 对图标的坐标轴进行调整
- Vue 开发技巧总结
- 35.opengl PBR-光照
- 聊聊claudb的list command
- nginx add_header 仅部分或一次生效的原因与解决办法