Publish Windows App to be Emailed - wpf

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.

Related

How to deploy a WPF application?

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.

DNN (DotNetNuke) reading files locally

Is it possible for DNN to read files directly off a server? What I would like to do is be able to drag files into a created folder on my server and they will automatically be uploaded and show up on my DNN site. My main concern in this scenario is that I want to be able to go into the file on the server make changes and the changes will automatically be reflected on my DNN site without me having to reupload the file.
You can put things into the Portals/#/ folder, or a subfolder there, and have DNN AutoSynchronize the file-system (there's a scheduled task) so that the files show up in the File Manager in DNN.
I have a client who has a specific Uploads directory they FTP files into, and the synchronization process makes them available to their editors.

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

Clickonce deployment with 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))

Log installer info when installing WPF App

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.

Resources