How To Add Files or Directory ClickOnce Deployment - c#

In my project I have a directory that's holding my Report files. When I deploy it to localhost, it's not including this directory. So with a little research I found a solution. I then added a directory to my project in VS and make my report file Build Action Content, Copy Output to Directory property. Now when I publish it, I can see my Reports folder in ClickOnce deploy.
But now it's saying that xcvqw34asdasczxcasdasdasd.3asd\Reports\generalReport.frx is not found, when within my code I call it Reports\\generalReport.frx.

I have corrected the problem. I changed
Reports\\generalReport.frx
to:
.\\Raporlar\\genelRapor.frx

Related

WPF Publish - include folders

I have a WPF project that is now finished, and I want to publish the app into an installer that other people can use.
When I publish the project, the project compiles into setup.exe, but on install the folders that I have do not get included.
I've been reading the guides, and made sure to include the files inside the folders as Content or a Resource. I've also made sure they are always copied. When some of my files are copied, they have a .deploy extension, and I need it to be an .xml in order for some function to read them. Images that I have in the app load fine however.
What do I need to do to have my custom files be EXACTlY as they are, xml as xml, txt as txt and so on. Also I have some empty folders, like this TempCF that I use at some point. Do i need to create it via code?
If you go to Project->Properties->Publish->Install Mode and Settings->Options->Deployment in Visual Studio, there is a "Use ".deploy" file extension" option that you can untick to get rid of the .deploy extension being added to your published files:
Empty project folders are not included in the output. Either put a dummy content file in them or create the folder dynamically as needed during runtime.
# Nikola L.
You could try to use the following methods to add the files in your program to the installation package so that you can have the files you need in your installation path. If I misunderstood your question, please let me know.
The steps are as follows:
1.Right-click on the Setup project and select View -> File System
2.In the File System page, right-click the Application Folder (File System on target Machine) and select Add->Folder(named User's Application Data ) -> Fileā€¦-> find the file under your project and select the file you need.
Such as:
3.Right-click the Setup project.
Install your setup package.
You can find the files you added in your installation path.
The result is like the picture below:

WPF - How can I generate a file inside the directory where the program is installed?

I'm trying to create a WPF application to do some of the time consuming QA tasks easier. Now I ran into problem of creating a file that would be used for configuration of some operation via ssh. This file will contain default configuration, however it might be updated by the user with new values.
I changed the properties of a file to "Build Action - Content" and "Copy to Output Directory - Always" however when I publish and install the application the file is not in the directory.
How can I make the file appear in the output directory and be available for some changes?
The published files get a .deploy extension by default. This is a setting that can be changed under Project->Publish->Options->Deployment in Visual Studio.
If you uncheck the Use ".deploy" file extension option and re-publish, you should see and be able to use the content file in the Application Files/app directory of the output folder.

Replace matching files with local copies VS2015 publish

I remember that in Visual Studio 2010 there was "Replace matching files with local copies" checkbox
Where this checkbox/radiobutton in Visual Studio 2015 ?
In VS2015 it's not possible to set this option in the Publish Window.
But we can do it in another way. Right Click on Project->Properties->Package/Publish Web->Items to deploy
According to MSDN you we have these options
Only files needed to run this application. This is the default value. Visual Studio tries to determine which files are required for
the application to run successfully. For example, this includes
assemblies in the bin folder, files generated during the build, and
files marked as Content. To see if a file is marked as Content, select
the file in Solution Explorer, and check the file's Build Action
property in the Properties window. You can change the Build Action
value to Content to cause the file to be deployed, or change it to
something else, such as None, to prevent the file from being deployed.
Some file types that are automatically set to Content include .master,
.svc, .ashx, .asax, .skin, .browser, .config, .and sitemap. A file
must be included in the project in order to have a Build Action
property.
All files in this project. Visual Studio deploys all files that are included in the project, regardless of their Build Action property
values.
All files in the project folder. Visual Studio deploys all files that are in the project folder and subfolders, regardless of whether
they are included in the project or their Build Action property
values.
UPDATE
I figured out another method how to update all files during publishing. I faced issue when some of my files were not updated properly (config,ascx and etc.), in my inetpub folder I had old version of files. So first I published site in another new folder and then replace files in inetpub folder with files from new folder.

Visual Studio Moving a Content File on Publish

I'm developing a Web application that uses a couple XML files to store data. I have their Build Action set to Content, and on install the files are copied successfully to the Applications Virtual Directory:
C:\inetpub\wwwroot\ApplicationName\
The problem I'm having is that writing to these XML files (in order to save settings and things like that) causes a lot of write permissions issues. Therefore to get around it, I'm trying to copy these files from the virtual directory they're installed to to a new directory under the C drive, using the following PostBuildEvent in the Web Deployment Project:
xcopy "$(TargetDir)*.xml" "C:\CompanyName\ApplicationName\" /y
However, this does nothing. I'm not sure if this is because PostBuildEvents in the installer are not actually fired on install, but only on building the installer, or if TargetDir represents the bin directory:
C:\inetpub\wwwroot\ApplicationName\bin\
instead of the root application virtual directory:
C:\inetpub\wwwroot\ApplicationName\
Does anyone have any ideas? Has anyone dealt with this sort of thing before? I'm really stumped on this one.
Update:
I included a PostBuildEvent that should give full permissions to all users:
icacls "$(TargetDir)" /grant Users:F
But it doesn't seem to have resolved the problem.
I'm also unsure where exactly $(TargetDir) if pointing to, if it would be ..\ApplicationName\ or ..\ApplicationName\bin\
All you have to do is give full permissions to the user under whose context the Web Application Pool runs.
You can find this user by starting IIS manager and look at the Application Pools and Identity column
Something like
cacls C:\inetpub\wwwroot\ApplicationName /G Users:F
will give all permissions to this subdirectory to all users on the computer, If you are running under ApplicationPoolIndentity refer here
Turns out there's a much easier way to do what I was trying to do.
Instead of using PostBuildEvents to create a new directory structure and move files there, I added the new directory structure into
InstallerProject > View > File System
after which I located the Content Files from SomeProject entry in my installer project, and changed the Folder value to the newly specified directory structure, in this case
C:\CompanyName\ApplicationName\
This seems to work fine, I'm now able to access these files freely as I originally intended.

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.

Categories