Hi there. I was wondering how I can store a file I have on my computer into my WFA project. I want to store a file in there so that when the user clicks on the button, it will distribute the file inside the program to the user's computer, in a specified folder.

Sounds like I'm trying to distribute a virus but I am not xD

Thanks in advance

Recommended Answers

All 9 Replies

Embed the file as a resource. Believe it or not this is common outside of malware. Expand the Properties folder in your solution explorer and double click on "Resources.resx"
At the top click "Add Resource" and select existing file. In this case I am adding a file called "File1.exe"

Now to copy the file out:

private void button2_Click(object sender, EventArgs e)
    {
      using (System.IO.FileStream fs = new System.IO.FileStream(@"C:\fileCopy.exe", System.IO.FileMode.Create))
      {
        fs.Write(Properties.Resources.File1, 0, Properties.Resources.File1.Length);
      }
    }

You could also add the file to the installer.msi to deploy your solution and have it copied out that way -- but that depends on what the file is and how you intend to use it.

Thanks, helped a bunch =]

You're welcome

Please mark this thread as solved if you have found the answer to your original question and good luck!

Well I want to ask another question if that's okay. Sorry I coulda had this in a few hours ago, had to go eat.

How can I rename a file? I know I can do the File.Move statement to change its name, but I'm tryiing to rename it by the user's input and the fact that it is by an open file dialog. I gotta go kuz need to sleep plus im sick plus parents gunna get mad at me here's the code that I used as an alternative to rename the file:

private void button4_Click(object sender, EventArgs e)
        {
            string fullfilepath = Path.GetFullPath(openFileDialog1.FileName.ToString());
            string thefilename = Path.GetFileName(openFileDialog1.FileName.ToString());
            string FHv3File = desktop + @"\FHv3";
            string oldfiledir = Path.GetDirectoryName(openFileDialog1.FileName.ToString());
            string gunzdir = @"C:\ijji\ENGLISH\Gunz";
            Directory.CreateDirectory(desktop + @"\FHv3");

            if (File.Exists(fullfilepath)) // if the open dialog file exists...
            {
                File.Copy(fullfilepath, FHv3File + @"\" + thefilename, true); // copies the open file dialog file to the created
                                                                              // directory -- and adds the name of the file
                File.Delete(fullfilepath); // deletes the open dialog file from its path
                if (File.Exists(FHv3File + @"\" + thefilename))// if the file exists in the directory which it should...
                {
                    string insideFile = FHv3File + @"\" + thefilename;
                    File.Move(insideFile, oldfiledir + @"\" + textBox3.Text); // moves the stringed file to original directory with name in textbox
                    File.Copy(oldfiledir + @"\" + textBox3.Text, gunzdir + @"\" + textBox3.Text, true);
                    if (File.Exists(desktop + @"\d3d9.dll"))
                    {
                        File.Copy(desktop + @"\d3d9.dll", gunzdir + @"\d3d9.dll", true);
                    }
                    else if (File.Exists(MyDocuments + @"\d3d9.dll"))
                    {
                        File.Copy(MyDocuments + @"\d3d9.dll", gunzdir + @"\d3d9.dll", true);
                    }
                    else
                    {
                        /* do nothing again lolly copters! */
                    }
                }
                else
                {
                    MessageBox.Show("Does Not Exist In Folder");
                }
            }
            else
            {
                MessageBox.Show("Not Found");
            }

            Directory.Delete(FHv3File, true);
            MessageBox.Show(thefilename + " Has Been Changed To " + textBox3.Text + " & Was Copied");
            textBox1.Text = "";
            textBox1.Enabled = true;
            textBox3.Text = "";

        }

gotta go now, thanks in advance
oh yeah, ignore the comments, those were for me so i don't forget, kuz it took me forever to come up with this
plus FHv3 is the name i called the program, file handler v3 thanks bb

File.Move() is how you rename the copy. You're taking the proper approach.

Please mark this thread as solved if you have found an answer to your original question and good luck!

oh okay thanks ^^

sorry sknake or anyone else if you can answer this, it does concern my previous question,

I'm trying to store 5 files as resources in my project, but when i am typing the code, on my 3rd file to copy the file out of the project and into the designated directory, I keep getting errors.

I don't know if it's coincidence that the first two files were .dll files, but i can't get the code to work on these 3 other files which are 2 .jpgs and 1 .txt file.

Here is a piece of my code to show you guys:

private void button2_Click(object sender, EventArgs e)
        {
            string Juggernaut = gunzdir + "Juggernaut.dll";
            string d3d9 = gunzdir + "d3d9.dll";
            string Splash = gunzdir + @"GameGuard\Splash.jpg";
            string ggSplash = gunzdir + @"GameGuard\ggSplash.jpg";
            string renameggSplash = gunzdir + @"GameGuard\Splash.jpg";
            string Hotkeys = desktop + @"\Hotkeys.txt";

            using (FileStream fs = new FileStream(Juggernaut, FileMode.Create))
            {
                fs.Write(Properties.Resources.Juggernaut, 0, Properties.Resources.Juggernaut.Length);
            }

            using (FileStream fs = new FileStream(d3d9, FileMode.Create))
            {
                fs.Write(Properties.Resources.d3d9, 0, Properties.Resources.d3d9.Length);
            }

            // I don't know what's going on in here. When I type the "." after Splash, I can't
            // find "Length"
            using (FileStream fs = new FileStream(Splash, FileMode.Create))
            {
                fs.Write(Properties.Resources.Splash, 0, Properties.Resources.Splash.Length);
            }

            // I don't know what's going on here either. It just gives me errors and I'm pretty
            // much stuck
            using (FileStream fs = new FileStream(Hotkeys, FileMode.Create))
            {
                fs.Write(Properties.Resources.Hotkeys, 0, Properties.Resources.Hotkeys.Length);
            }
        }

Thanks anyone who can further assist me.

That is because when you embed a resource the IDE strongly types the file for you, pretty neat!

exe,dll: stored as byte[] ,
jpg,bmp: stored as Bitmap ,
txt,log: stored as string .

Here is an example of each type:

public void ExtractResources()
    {
      
      string outputDir = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "ResourceDirectory");
      if (!outputDir.EndsWith(Convert.ToString(Path.DirectorySeparatorChar)))
        outputDir += Path.DirectorySeparatorChar;

      if (!Directory.Exists(outputDir))
        Directory.CreateDirectory(outputDir);

      //
      {
        //Bitmap image.bmp -- stored as Bitmap
        string bmpFileName = Path.Combine(outputDir, "File_BMP.bmp");
        if (File.Exists(bmpFileName))
          File.Delete(bmpFileName);
        Properties.Resources.File_BMP.Save(bmpFileName);
      }
      {
        //DLL Library.dll -- stored as byte[] array
        string dllFileName = Path.Combine(outputDir, "File_DLL.dll");
        if (File.Exists(dllFileName))
          File.Delete(dllFileName);
        File.WriteAllBytes(dllFileName, Properties.Resources.File_DLL);
      }
      {
        //EXE file.exe -- stored as byte[] array
        string exeFileName = Path.Combine(outputDir, "File_EXE.exe");
        if (File.Exists(exeFileName))
          File.Delete(exeFileName);
        File.WriteAllBytes(exeFileName, Properties.Resources.File_EXE);
      }
      {
        //JPG File.jpg -- stored as a Bitmap
        string jpgFileName = Path.Combine(outputDir, "File_JPG.jpg");
        if (File.Exists(jpgFileName))
          File.Delete(jpgFileName);
        Properties.Resources.File_JPG.Save(jpgFileName);
      }
      {
        //TXT File.txt -- stored as string
        string txtFileName = Path.Combine(outputDir, "File_TXT.txt");
        if (File.Exists(txtFileName))
          File.Delete(txtFileName);
        File.WriteAllText(txtFileName, Properties.Resources.File_TXT);
      }
    }

oh cool.

edit:

oh nvm i got =]

thanks a bunch dude! you always help me ^^

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.