I have an application that I need to deploy via ClickOnce on a web page, but I need it to only install the application and not execute it automatically after the install is complete. The user should have to manually start the application from the start menu - even after the initial install.
How do I accomplish this?
The answer is in the MSDN article How to: Disable URL Activation of ClickOnce Applications by Using the Designer.
Related
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
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.
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.
I have a C#/WPF app that uses ClickOnce for deployment. There is a scenario where the app needs to restart (the user changes a database). I do it by:
System.Diagnostics.Process.Start(System.Windows.Application.ResourceAssembly.Location);
System.Windows.Application.Current.Shutdown();
After restart, it seems that the app has issues:
The version becomes 1.0.0.0.
The current database setting is set to default (it is in the application's Properties.Settings).
I don't know that I fully understand the question, but I do know there is an issue with the method you are using to restart the application if it is a ClickOnce application. When you restart the application this way, ApplicationDeployment.IsNetworkDeployed will be false. See this post for a full explanation: http://bit.ly/RKoVBz.
I haven't verified the proper way to restart the application yet, but I'll update this a soon as I do.
I have a WPF (Clickonce) app. I want to find out which users are installing or re-installing the app, and probably write those info in a database for audit.
How can I do that?
The current ClickOnce deployment doesn't provide any server-side hooks for monitoring whatsoever (in fact, the "website" generated by ClickOnce publishing is just a very simple, plain HTML page providing a link/button for downloading and executing the .application or setup.exe, respectively, on the client machine. Everything else is taking place locally).
Now, depending on what you want to log (initial installations, or updates, or both) you have the following options:
Create your own website where user will register before getting access to the install/launch for the app (or maybe you just identify them by IP - depends on your needs) - this allows you to log who first installs the app, but not the automatic updates.
In your application, use the classes in the System.Deployment namespace (notably ApplicationDeployment) to access information about updates etc. whenever your application is run. You can then have your app make calls to a web service that you provide, where you can log any installation / launch action (or even other runtime information, like usage of certain features, exceptions etc).
If you are targeting .NET 4, you can have the log files go to a specific folder. Then when the user runs the application, you can have it copy it to your server and delete it, or write it to a database and delete it. Here's an article explaining how to specify where to put the log from a ClickOnce deployment. Note that it runs when you install, update, or uninstall the application.
http://robindotnet.wordpress.com/2010/05/31/enhanced-logging-in-clickonce-deployment/
The registry settings are in HKCU, so you could have your C/O app actually set the info when it first installs. You'll miss the first install log, but it will write the logs to disk after that.
Also note that the article tells you how to turn on verbose logging. You don't have to do that just to write the log to a folder.