How to copy a file to output folder without modifications? Visual C# - c#

I would like to publish a project with a mp3 file in the application folder, so that I can use it when app is running. Is there some way to do it?
My current attempt is to click on the mp3 and drag it to the "Solution Explorer". When the program is published, the output folder does have a "play.mp3" file, but it is named "play.mp3.deploy", which turns it unusable

If this is a forms app then add the mp3 file to a resource file (resx) and access it that way.
If the app is a website you should be able to mark the file properties as Build Action = Content and Copy To Output Directory = Copy Always. This should then just get deployed in the same manner a js file would for example.

Related

How to load pdf file from \bin\x64\Release in a published WinForm Application?

What am I doing? I want to add a help file to a Windows Forms application. I added the pdf to a folder in my project and set the property Copy to Output Directory to Copy Always. This causes the file to be copied to the Debug and Release directories in the bin. This works perfectly on debug mode when I run the application.
What's the problem? This does not work on the production version. I am targeting x64 os only. The pdf is being copied to bin/x64/Release but it crashes when loading.
This is how I load the pdf
string filePath = #"HelpFiles\File.pdf";
Process.Start(Path.Combine(Application.StartupPath, filePath));
Any idea on how I can get the program to load the file on the production version?
Have you tried opening your projects's properties, under Publish tab, open Application Files... and include your "HelpFiles\File.pdf"
Similar to this?
And then try to publish it.
Edit: All files/programs that are being installed by ClickOnce should be included in the Application Files... and Build Action property of the pdf file from None to Content.
Assuming you have a fixed pdf file you could simply just add the file to your project as ressource.
Then you will have access to the file as Byte[]. using
String tmpPdfFilePath = Path.Combine(Path.GetTempPath(), String.Format("{0}.pdf", Path.GetTempFileName()));
File.WriteAllBytes(tmpPdfFilePath, Properties.Default.PdfFile);
Process.Start(tmpPdfFilePath);
Only downside, you copy the file to the temp dir every time. You could get around this by using a static filename instead of Path.GetTempFile(). Check if the file exists and copy it to the temp on demand.
Update
If you add the file as ressource to your project in the default ressource file you can get the bytes of the file with
Properties.Resources.FileName

How can i merge exe file with dlls and other files?

I have a simple c# project that contains a form, a button and an axWindowsMediaPlayer that shows a video.
My video file is in bin/debug folder.
Now, i want to create an exe file and run it on other machines without install.
How can i merge or embed all dlls and exe and video files in simple exe file and run it on other machines?
my debug folder image :
Thanks in advance
A self-extracting exe will give you a single file for distributing your application to other machines, however, if your goal is to end up with a single exe file after installation, then you could embed the dlls and video files as embedded resources in the main exe. To do this, right click on a file in solution explorer and in the properties tab select Embedded Resource for the Build Action. Depending on the type of resource you're embedding you may need to modify your code to access it.

Read file from Application folder while publishing a Click Once application C#

I have an application in C# where I have to select a file and process it. I use Visual Studio's Publish option to generate a Click Once application . But if I want to bundle the file along with the application and set it as default instead of Open File dialog, where should I place the file? The file is an Excel file
first create a folder to hold your custom files in the project,put your excel file inside that folder using add as link in the dialog box.Mark all files as Copy if newer (Copy to output directory property)and just make sure your build action is content.
Thats it..
for more reference
Source 1
Source 2

Embedding a PDF as a resource in WPF application

I want to embed a PDF file (which is basically have Product details, Release notes) and wants to open that file from menu bar. What would be the best approach. I need to use this file in installer also. So i'm looking for an approach in which file will be moved to BIN on compilation and from there installer can access that file.
IDEAS ...
Add the file to the project the builds the EXE (use Add existing file in visual studio). Then right click on the file in visual studio, go to properties, and verify that the build action is "Content" and the copy to output directory is "Always" or "If newer" (whichever suits you).
Then this file will always be copied to the same directory where the EXE resides and your application will be able to access it because it's always in the application's directory.
If the installer just takes the BIN directory then it will also be able to access it because the file will reside in the BIN directory.
Have fun!
Finally i did it in following way:
a. We've a folder which contains notes.pdf (used by installshield).
b. Created a pre build command to copy the pdf file from installshield folder to output directory.
c. use process.start("notes.pdf"); to open the file. As it would look in bin directory first for pdf file and we've already copied it there.
It worked for both Installer version and running application from code.

How do I add files to a windows mobile device when deploying it?

I have a number of images and a CSV data file that I want to deploy to a windows mobile device along with my application. I'm using Visual Studio 2008 and C#.
I've added a "Content" folder to my project which contains the bmp images and the CSV file. When running my program on the emulator (by hitting F5) only the app is deployed, and not the "Content" directory.
I know I can add images to the resource file, but that isn't what I want to do - I want the images to actually be available on the device so that they can be changed without having to deploy a new application.
So my question is how can I set it up so that the "Content" directory is copied to the device?
Thanks in advance!
THe files from a "Content" folder will not be deployed on your device.
In order to deploy a file, right click it -> Properties -> select "Content" from Build Action
Are the files within that folder also marked as content?
In order to deploy files in the content folder along with folder,
Follow the below procedure,
Right Click the files inside Content folder--> select Propeties-->Build Action-->set build action as "Content" --> Copy to output directory--> set Copy always or Copy if newer.
Like this Do changes to all type of files(.csv,bmp etc)
Then Finally deploy into emulator or native device.
You will see the all files appearing on the program directory of emulator or device.
Happy Coding -:)

Categories