How to deploy a WPF application? - wpf

I have developed a WPF application and deployed it using Click Once Deployment. I installed it on another pc it works fine but the problem is that the application's root folder is being created in a temporary folder in app data/local. I want to give user the flexibility of installing the software wherever he/she wants. How do I do this?

You simply can't change the installation folder using ClickOnce. If you want to do this you need to choose a different installer technology.
ClickOnce application require no administrative privileges and are always installed per user in the user application cache.

Related

UWP App WPF .Net Core has no access right to dependencies

We're making a new application using WPF .Net Core. To use the auto update function we decided to pack it with the MSIX Packaging Tool as a UWP App in VS2019. I was able to host the appinstaller File on an IIS and to Install the App over a link to that file over the web. Auto updating is also working fine.
Now to the problem:
When I run the installed App it's icon is not showing in the task bar but it is shown in the Task-Manager using a lot of cpu. In the Process Monitor it shows that the App tries to access its dependencies (like PresentationFramework.dll) but is not successful as the result is always "File locked with only readers". The DLL itself is present in the WindowsApps/xxx/ Path. Also I can not start the EXE manually as my user do not have the rights. What am I missing here?
Edit: Also I realized now that my app is only starting as a background process in the task manager and not as an app. When I go to the app directory under WindowsApps/xxx/MyApp I can not start the EXE directly because of no rights as mentioned before. But when I copy the whole folder I can start the EXE, the GUI appears and the app is an app again in the task manager.
We found an answer. As the GUI is a WPF .Net Core Project and we make the setup with a Windows Application Packaging Project to generate a UWP App from it the technology used seems to be the so called Desktop Bridge.
In the process monitor it seems that it tries to access the files under the correct path but somehow it does it not in the right way as long as the application path is not set correctly in the WPF Projects App.xaml.cs.
To fix this use the solution from Andrew Leader

How to get setup.exe folder path for ClickOnce

I have a click once Application which is deployed in folder say, "c:\temp\MyApp". In this folder I have a config file "MyAppDynamic.config" which I want my click once app to read when it starts.
When I click on c:\temp\MyApp\setup.exe, ClickOnce App is deployed in %APPDATA%.. folder and hence I am not able to get the folder location from where clickonce is launched.
Is there a way to get the launch location in clickonce app?
Am I doing something wrong?
Thanks,
RDV
Little more info:
My clickonce app's main purpose is to install a bunch of pre-reqs on client box. These pre-reqs can be located anywhere on network (their location changes depending upon whether the particular component is in development or production). I did not want to update the clickonce installer just because some dynamic location changed and thats why I do not want to hardcode the installation paths in ClickOnce app.
Hence, I am using an external file "MyAppDynamic.config" where I update the installation paths of all components and I place this file in the published folder where setup.exe resides.
The problem is I want to read this file when ClickOnce application starts, but any System/Environment variable wont give me this published location because by this time, ClickOnce is already deployed on Client Box and all Location/CodeBase paths point to %APPDATA%..
Question:
Is it possible for a deployed clickonce application to get its installation directory path (I verified IsolatedStorage does not provide this information)?
Is above not not possible, are there any ideas how to achieve this? Again I do not even want to hardcode location of MyAppDynmaic.config file. But if nothing else work, this is going to be my best bet :-(
Thanks,
RDV
There is no way to get or set location of installation. Installation folder is under Isolated Storage for security purpose. You can read your config file. Check this answer;
How can I get the application's path in a .NET console application?

How to Deploy Click Once Application in different Domains

I have built a C# WPF Application in Dot Net Framework 3.0 and published thru Click Once Application via localhost IIS in my system. My system placed in FileServer1 Domain and all the systems under FileServer1 can able to install the application. But we can not able to install it under different domain FileServer2.
While clicking the Install button, it will show that Installation file was missing. Please help me out how to proceed with this issue.
While publishing the file, I have given as http:\10.xxx.xx.xx instead of localhost. Now its working in all the domains.

WPF Application External deployment

We are planning on building an application that will be used within our corporate network and we can also extend this application through internet facing to our contractors.
Can a WPF sandbox application (not XBAP) be deployed externally (for example on Windows Azure) while we can still be able to access it internally through the corporate network?
Or If we deploy this internally, is can we be able to give direct access to contractors outside the domain?
I am new to WPF and have looked through WPF deployment documentations but can't find anything on this. Thanks for your help in advance!
I have developed a large scale WPF business application and deployed it using ClickOnce. Although all of the users access it on the local intranet and we don't have any users external to the office, I can confirm that I have used the application whilst at home.
The only thing that you have to worry about is whether all users have permission to access:
the deployment server for installation and updates
all intranet files and folders that the application uses
all database tables, views, stored procedures, etc.
However, if you're not sure, just try it out... it only takes seconds to publish applications using ClickOnce.

DNN / WebMatrix / Localhost / Multiple Sites

It seems that DNN is undergoing an upgrade and I cannot access the forums or many of the docs. Needing an answer soon, and Google providing too many varied types of hits (none of which are helpful or most of which post to the DNN site that is undergoing that upgrade), I had a few questions about setting up DNN.
First, I am coming from Orchard. There I was able to use Webmatrix - I downloaded the web version, opened as administrator, created modules, messed with themes, etc. Using the Orchard Docs, I was able to set up a multi-tenant site and run it on local host (IIS express through Webmatrix) - this included modifying the host/config files to view the multi-tenant sites. I could then publish to my own server running IIS 7. On the server I set up the landlord site then bound the tenants with no problem.
Being new to DNN (and things not being readily available at the moment on their site), I was hoping I could get some guidance on how to set up DNN similar to what I did with Orchard.
First question is obviously whether or not that is possible (i.e., no IIS, only IIS Express (Webmatrix) on my local machine).
Here would be my other questions:
If I can run it locally, can I just download the 7.1.0 new install package, and open Webmatrix (as Admin) on the folder I unzipped it in?
Assuming I just "Run" the website, I will then set up the "Landlord" instance of DNN on the following screens, correct? (i.e., where it asks for credentials and what DB setup I can use)
Can I then go ahead and create sub-tenant sites (alias/portal)? If so, do I go about manually updating my host/config files to run those tenants (depending on the port)?
Assume all of the above is correct, do I have to "reinstall" the 7.1.0 package on my webserver, or will a simple publish from Webmatrix do (with the proper credentials in Settings)? If so, I can handle pointing to the landlord on my server and then binding my subtenants in IIS.
Sorry for the n00b questions. Thanks!
On the Download page on dnnsoftware.com, there's a link to click which will start the install process within WebMatrix: http://www.microsoft.com/web/gallery/install.aspx?appsxml=www.microsoft.com%2fweb%2fwebpi%2f2.0%2fWebApplicationList.xml&appid=106
When you create a new portal, you can specify that it uses a URL which is a subdirectory of the current URL (i.e. a child portal alias), so that you don't have to use different ports. I'm not especially familiar with IIS Express, so I would expect that you could point multiple ports to the site, and map those as different portal aliases, but not sure exactly how you could do that, if you don't want to make use of child portal aliases.
To publish a site, you should just need to push the file system and database, and setup IIS.

Resources