Windows窗体应用程序:在应用程序安装上添加文件

时间:2015-01-09 15:17:23

标签: c# windows winforms forms

我的WF应用程序需要excel文件才能正常工作。有没有办法将该文件添加到项目中,当用户安装我的应用程序时,它会自动将自己置于默认路径中?

由于

2 个答案:

答案 0 :(得分:1)

您可以将文件嵌入可执行程序集中:

  1. 将文件添加到项目中。

  2. 在解决方案资源管理器中选择文件,然后打开属性(F4)。

  3. 将“Build Action”设置为“Embedded Resource”。

  4. 在您的代码中,加载资源流并将其复制到目标文件流:

    var assembly = Assembly.GetExecutingAssembly();
    using (var resourceStream = assembly.GetManifestResourceStream("YourNamespace.ExcelFile.xlsx"))
    using (var targetStream = File.OpenWrite("targetFile.xlsx"))
    {
        resourceStream.CopyTo(targetStream);
    }      
    

    确保YourNamespace与您将Excel文件放在项目中的目录结构的命名空间相匹配。

  5. This Knowledge Base article详细解释了该程序。

答案 1 :(得分:0)

将文件添加到项目中,并将其构建操作设置为“Copy if newer”。之后,应该在安装应用程序时将其与二进制文件一起部署。但请注意,此副本应视为只读。

如果您需要在安装后保存对文件的更改,则将其复制到用户配置文件中的应用程序数据文件夹中:

var appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var writableFilePath = Path.Combine(appDataFolder, "MyApplication\\MyExcelFile.xlsx");
// ensure directory exists before copying to it:
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(writableFilePath));

...并且只要它已经存在就使用此文件而不是只读版本。