Clickonce deployment with wpf - wpf

I've created a wpf application and its installer with Clickonce. But running installer on another computer causes exe file creation in Start-Programs-Microsoft. What should I do to make installer create a folder in Program files?
By the way, I also want a program to create a desktop shortcut, I put make the "Make desktop shortcut" checkbox enabled when customizing publishing options, but nothing happens.

Clickonce doesn't allow to specify a folder in Program Files, the solution was to create a Setup Project within the solution.

The Publisher name settings under Publish Options -> Description of the project properties in Visual Studio determines the folder under Program Files.

I usually follow below steps. Hope it may helps
Steps
1. Right click on the client project -> properties -> Publish tab
Publish folder location, installation URL(eg: http://LocalHost/Application/client/)
Click updates give same installation URL
Click options > give name and description for the application
Click Publish
Copy the files from Publish folder location and paste it in corresponding installation URL
Browse the install.htm
Click install
Some times before publishing you may need to create a new certificate (project properties -> signing tab > create test certificate (password not mandatory))

Related

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?

Publish Windows App to be Emailed

I have a finished version of an app (made using WPF). I want to publish it so that the installation files can be emailed to another person. The only options shown with the Visual Studio 2013 Publish Wizard are "From a Web site", "From a UNC path or file share", or "From a CD-ROM or DVD-ROM".
How can I publish the app so that it goes into a nice and tidy folder on my Desktop which I can simply zip up and email it to someone? To which they can simply unzip, click setup, and follow the traditional setup wizard. It needs to be able to run on Windows XP thru Windows 8.
(I have .csv files and image files that the application uses, if it is relevant.)
In Visual Studio, highlight the project you want to deploy and right click. This will raise a context menu which has a 'Publish' item on it...
Selecting this will raise a Wizard like this...
From here, select 'Finish'. This will create a directory with a Setup.exe and all the necessary files to install the application on a different machine (given security levels permit, third party software restrictions, and a host of other deployment issues). You can then create a zip file (keeping the directory structure) and email it.
The 'Publish' feature has other options on it you will want to explore, like Click Once.
That is pretty straight forward if you are going to perform zip and email to your subscribers
begin with publishing the app from Build -> Publish
Choose a path from your local hard drive eg. C:\Myapp
then in next screen choose From a CD-ROM or DVD-ROM
then in next screen choose The application will not check updates unless you have a web location where you can publish the updates (which I guess you dont want for now)
then Finish
and your chosen folder C:\Myapp will contain the setup files which you can zip and email to your users.

Wix installer keep user settings config on upgrade

I have a WPF application that uses user settings to store the users preferences and I use the Wix installer to install the application. When the application gets installed, the default config file is placed under the install location, for example C:\Program Files[CompanyName][ApplicationName]. When a user makes changes to their preferences in the application, these preferences are saved out to the users AppData folder, an example of this path might be
C:\Users[Username]\AppData\Local[ApplicationName][ApplicationName].exe_Url_pduhkwydh2kyq5nkqnr5jbnuaznm\1.1.0.0\user.config
Now, if I am upgrading the application to version 1.2.0.0, the application now defaults back to the default config file and when the user makes changes to their preferences again, a new folder is created this time being 1.2.0.0\user.config.
How can I preserve the user.config when upgrading the application? I don't know the location of the user.config file during install or where the new user.config will be created. Is there a better way of storing user settings?
This is an application issue, not an installer issue. The application should perform a settings upgrade by calling Upgrade.
To determine if an upgrade is required, create a user setting saying it is and then change it after the upgrade.
if (Properties.Settings.Default.IsFirstRun)
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.IsFirstRun = false;
Properties.Settings.Default.Save();
}

Azure Clickonce publishing

we are working on a WPF application which we want to publish as a click once smart client application.
We are able to publish the application on local machine using Visual Studio 2012 and configured it in IIS.
Now we want to upload the published smart client installer to windows Azure Virtual Machine with Windows Server 2012 and IIS 8. We cannot upload the locally published components as the URL configuration in the manifest and deployment file is that of local server. We tried to edit the entries using text editor but once we do the editing the files become unused and it shows xml parsing error when we try to install from the location.
we tried to publish the application direct to the Virtual Machine but it shows an error as Front Page Extension is needed in IIS. We tried to find Front Page extension but couldn't find an version for IIS 8 in Windows Server 2012.
Can any one help us to publish the application in Azure Virtual Machine.
The problem you are having has nothing to do with Azure per se.
In the first case (of editing the XML files), you can do that but it's best to use MageUI to do the edit, because you can then re-sign the manifests. If you just edit the files, it messes up the security on them, and they will not work (as you have found). If you want to edit them with a text editor, you can do that, but then you must re-sign them (using mage); you can create a script to change the installation URL.
Or you can use MageUI. You need to do it in this order:
Open the application manifest in the versioned folder and then save it, re-signing it with your signing certificate.
Open the deployment manifest (yourapp.application) in the top deployment folder. Change the Start Folder to be the right Installation URL. Go to the "Application Reference" tab and re-select the application manifest in the versioned folder. (I know, it hasn't changed, but trust me, you have to do this.) Save this manifest and sign it with your signing certificate.
Copy the deployment manifest from the top folder to the versioned folder. It's always good to keep a copy, so you can go backwards a version if you need to.
NOW you can copy the files to your VM and they will work fine.
In the second case, the Front Page Extensions are required if you are using HTTP to publish the application, yet they are no longer available past about Windows Server 2008(?). So don't use HTTP. Use FTP. Set the publish file location using FTP, like ftp://myserver.mycompany.com/myfolder and set the Installation URL to the HTTP equivalent of it. Then publish it. It will put the files on your VM (assuming FTP is enabled on both sides), and the HTTP link should work.
By the way, you can also host your deployment in Azure blob storage. It is dirt cheap, and you can use something like Cerebrata Cloud Storage Studio or even write your own code to publish it (which I did). This article explains how to put the files out there, what the MIME types need to be, etc. If you do this, then it will work even if you need to replace your VM or redeploy it or the VM becomes unavailable for some reason.
here is a reference to Avkash Chauhan's blog post explaining in detail How to deploy ClickOnce Application using Windows Azure Storage in very simple steps?
http://blogs.msdn.com/b/avkashchauhan/archive/2011/05/09/how-to-deploy-clickonce-application-using-windows-azure-storage-in-very-simple-steps.aspx
He also gives an code example of a windows form (using Wpf) that he shows how to deploy on azure using one click deployment.
hope this helps

Run .net app in Vista/Windows 7 as admin

I have created .NET winforms application and setup project for it.
What I need is that after installation, my application always runs with administrator privileges.
Could someone tell me how I can configure my application to do that? Can I do it just by modifying source code?
Add a manifest file to your project and set the "requireAdministrator" settings. e.g.
Right click your project, add file
Select app manifest
Open the file and make your requestedExecutionLevel match:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
If it's already installed, you can locate the exe and select properties. In the Compatibility tab, check the box at the bottom "Run this program as an administrator".

Resources