无法从安装程序类中获取/写入文本文件中的值

时间:2014-08-25 04:36:39

标签: c# visual-studio windows-installer installation

我在winform应用程序中有一个安装程序类,我正在创建我的应用程序的设置。现在我想将输入设置文本框的值检索到安装程序类并使用自定义操作写入文本文件。这是参数我试图使用安装项目的自定义操作发送..

/targetdir="[TARGETDIR]\"/Param1="[EDITA1]"/Param2="[EDITA2]"/Param3="[EDITA3]"

以下是我试图检索并写入新创建的文本文件的方式,这种方式没有发生..

 public override void Install(System.Collections.IDictionary stateSaver)
    {

        base.Install(stateSaver);

        string targetDirectory = Context.Parameters["targetdir"];

        string param1 = Context.Parameters["Param1"];

        string param2 = Context.Parameters["Param2"];

        string param3 = Context.Parameters["Param3"];

        try
        {
            File.Create("D:\\Yourfile.txt");
            FileStream fs1 = new FileStream("D:\\Yourfile.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter writer = new StreamWriter(fs1);
            writer.Write("Hello", writer.NewLine);
            writer.Write(param1, writer.NewLine);
            writer.Write(param2, writer.NewLine);
            writer.Write(param3, writer.NewLine);
            writer.Close();
        }
        catch { 

        }
      }

我无法在我的文本文件中获得Hello。请告诉我我哪里出错了.. 感谢..

1 个答案:

答案 0 :(得分:0)

您正在创建一个文件,然后尝试访问该文件,这会生成一个IOException,您很乐意将其与空捕获一起使用。

您只需注释掉以下行File.Create("D:\\Yourfile.txt");,然后它就会为您效劳。

请注意您正在写行,并在writer.NewLine上转发。如果这是你想要的话,我可能会使用以下内容:

writer.WriteLine("hello");

除此之外,您还可以只写一个字符串或一个字符串数组,并执行:

var first_ten = read_all_lines.Take(10);
var out_path =  "D:\\Yourfile.txt";
System.IO.File.WriteAllLines(out_path, first_ten);