iT邦幫忙

0

Winform 將Resource複製到本機

  • 分享至 

  • xImage

各位先進大家好:
最近在撰寫一個簡單的"一鍵更新設定檔",當然我知道有更好的方式如AD SCCM派送等。
但因為有些區域沒有加入終端管理關係,需要使用WinForm 單一EXE執行程式式進行檔案替換。
https://ithelp.ithome.com.tw/upload/images/20231001/20053702XPiZfCQXwA.jpg

使用語言:Windows Form App MVC 6 LTS C#
呈現方是:單一 exe檔案提供給使用者,當使用者點「新版連線更新」即複製 updater資料夾中的 ApplicationSetting.xml及db_connection.xml到指定位置。

棘手問題:「如何將Resource資料複製到本機」

https://ithelp.ithome.com.tw/upload/images/20231001/200537029PogqqeJcO.jpg

經過查詢中文及英文的資源,都沒有尋獲相關關鍵字或範例程式碼
還想請各位指教該如何解決這問題。

非常感謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
wdchiang
iT邦新手 2 級 ‧ 2023-10-02 11:42:29
最佳解答

ChatGPT 的回答,參考看看,WinForms 我比較少寫,回答的內容看起來可行性很高:

在WinForms中,要將資源複製到本地,可以使用System.IO類來處理文件操作。以下是將資源從應用程式內部複製到本地的一種方法:

確定資源的位置:首先,確定要複製的資源位於應用程式內部的哪個位置。這通常是嵌入在程式集中的資源。

創建目標文件路徑:決定將資源複製到本地文件系統的哪個位置。您需要創建一個目錄,並準備好文件的文件名。

複製資源:使用System.IO.File類的方法來複製資源。以下是一個示例:

csharp
Copy code
using System;
using System.IO;
using System.Reflection;

namespace ResourceCopyApp
{
class Program
{
static void Main(string[] args)
{
// 獲取程式集
Assembly assembly = Assembly.GetExecutingAssembly();

        // 定義資源名稱
        string resourceName = "ResourceCopyApp.sample.txt"; // 替換成您的資源名稱

        // 定義目標文件路徑
        string targetDirectory = @"C:\MyDirectory"; // 替換成您的目標目錄
        string targetFilePath = Path.Combine(targetDirectory, "sample.txt");

        // 複製資源到本地文件
        using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
        {
            if (resourceStream != null)
            {
                using (FileStream fileStream = File.Create(targetFilePath))
                {
                    resourceStream.CopyTo(fileStream);
                }
            }
            else
            {
                Console.WriteLine("資源不存在或無法訪問。");
            }
        }

        Console.WriteLine("資源已複製到本地:" + targetFilePath);
    }
}

}
上述示例中,我們首先獲取了當前程式集,然後定義了資源的名稱和目標文件的路徑。接下來,我們使用資源流將資源複製到本地文件系統中。請確保替換資源名稱和目標目錄,以符合您的實際情況。

運行應用程式後,資源將從程式集中複製到本地目錄。這使您可以在本地訪問和使用它。請注意,您可能需要處理目標文件已存在的情況,以避免覆蓋或其他問題。

Kevin iT邦新手 4 級 ‧ 2023-10-03 22:08:40 檢舉

用ChatGPT已經超出我想像了,原來我跟不上人工智慧的時代...

wdchiang iT邦新手 2 級 ‧ 2023-10-04 08:52:17 檢舉

我覺得主要是可以拿來當參考,省下一些找資料的工並提供一些寫程式的靈感。

0
蕭小光
iT邦新手 5 級 ‧ 2023-10-02 05:23:57

可以用httpclient下載檔案,試試

我要發表回答

立即登入回答