各位先進大家好:
最近在撰寫一個簡單的"一鍵更新設定檔",當然我知道有更好的方式如AD SCCM派送等。
但因為有些區域沒有加入終端管理關係,需要使用WinForm 單一EXE執行程式式進行檔案替換。
使用語言:Windows Form App MVC 6 LTS C#
呈現方是:單一 exe檔案提供給使用者,當使用者點「新版連線更新」即複製 updater資料夾中的 ApplicationSetting.xml及db_connection.xml到指定位置。
棘手問題:「如何將Resource資料複製到本機」
經過查詢中文及英文的資源,都沒有尋獲相關關鍵字或範例程式碼
還想請各位指教該如何解決這問題。
非常感謝
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);
}
}
}
上述示例中,我們首先獲取了當前程式集,然後定義了資源的名稱和目標文件的路徑。接下來,我們使用資源流將資源複製到本地文件系統中。請確保替換資源名稱和目標目錄,以符合您的實際情況。
運行應用程式後,資源將從程式集中複製到本地目錄。這使您可以在本地訪問和使用它。請注意,您可能需要處理目標文件已存在的情況,以避免覆蓋或其他問題。