将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程序的安装包,就方便了!

 

posted on   深蓝医生  阅读(730)  评论(1编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2010-12-08 SQLSERVER 占了500多M内存,原来的程序无法一次查询出50多W数据了,记录下这个问题的解决过程。

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示