Updating an Application on a locked down user's PC - winforms

I am writing a Windows forms application to go between our other systems and our new software package that we are still setting up. I am doing an iterative development method because I am creating the tools as we find that we need them. My problem now is that when I publish a new change, we have to go to the workstations, log in as admin, and install this app. Being the process as it is, this just isn't feasible.
What other options do I for releasing this to the users? And how would I go about doing it?
I am using VS2008 and .NET 3.5

Maybe you could use ClickOnce deployment.

I've used Web Update Wizard Which installs a service (which runs with admin rights) when you first install your app. Then when it updates, the service does the updating.

Related

Need to customize DNN 8 Modules and Skins

Is it possible to customize the DNN 8 modules and Skins? Is it possible to config the DNN 8 and use it in VS 2010 framework 4.0? If is it let me know the steps to do, because I have configured DNN 8 site to the IIS 7 and it works good from the there, but when I am trying to load this to the VS2010 and Build it, it gives me different errors.
Errors:
i) Unknown server tag 'dnn:DnnCssIncludes' - Which was resolved by adding one line for dnn tag in the same file.
ii) After resolving previous error the another error wsa of ckFinder, and it was resolved by adding ckFinder.dll file in bin folder.
iii) After resolving previous issues it generates new error for ckEditor. It shows me the following error message:
The type or namespace name 'Ventrian' could not be found (are you missing a using directive or an assembly reference?)
I have tried to resolve and search for the solution but fail to do. Will any one let me know the fixes for this?
Yes, this is possible, you will want to do a couple of things
Setup your Environment
Open the Project for whatever you are modifying, this typically involves install the SOURCE package of the extension you want to modify.
Don't change "core", meaning don't change "DNN" itself, you can, it's open source, but once you do you are forked and upgrading to new releases of DNN is very difficult to do if you aren't careful.
Setting up your environment
From http://www.christoc.com/Tutorials/All-Tutorials/aid/1
Setting up your development environment can vary based on what your end goal is. If you are doing module development for your own use, and within your own DNN environments, you can ignore a few of the settings below. If you are doing module development with the idea that you might turn around and give the modules away, or sell them, then you will likely want to follow the guidelines set forth below to support the widest array of DNN installation environments.
I recommend that each developer have their own local development environment, with a local IIS website running DotNetNuke, and a SQL Server 2008/2012 (not express, though you can use it) database for the website. Having an individual development environment makes group module development far easier than if you share environments/databases.
Choosing a DotNetNuke Version
Choosing a version of DotNetNuke is important when you start your development for couple of reasons. For modules that you are developing for yourself, you need to ask, what is the minimum version of DotNetNuke that you have in production. Are you running DNN 5.6.1? Are you running 6.2.6, 7.0.0, 7.0.6? Based on the answer you can determine what version of DNN you should setup as your development environment. You shouldn't be developing on a newer version of DNN than what you have running in production. As with everything there are ways around this, but I am not going to go into the details on that in this tutorial.
As a developer working to create modules and release those, you might have production sites that are running on the latest and greatest version of DNN, but what about your customers? Or your potential customers? You have to ask yourself, do you want to provide support for really old versions of DotNetNuke? From a development perspective you will probably say no, but from a business perspective, you might say yes, and here’s why. Not everyone upgrades DotNetNuke websites as they should, and often times you will find that some people never upgrade. While I don’t advise taking that approach to managing a DotNetNuke website, it is a fact of life that people don’t always upgrade and there are thousands of people, if not tens of thousands, that have sites that aren’t running on the latest version of DNN. You should take that into account when you are doing your module development, if you compile your module against an older version of DNN then your module should run on newer versions of as well, for example. If you compile your module against DotNetNuke 6.2.6 it will likely run on every version of DNN released since then. Though there are extended cases where this won’t always work, DNN strives to maintain backwards compatibility, this isn't always possible.
You might also want to use features that are only available starting with a specific version of DotNetNuke, such as the workflow functionality found starting in DNN 5.1, in that case you may choose not to support older versions of the platform out of necessity. This will minimize the market in which you can sell your modules, but also can make for less support and an easier development cycle due to the features that DNN provides.
Choosing a Package
Now here’s one that may baffle you a bit. I’m going to recommend that you use the INSTALL package for whatever version of DotNetNuke that you download. What? The INSTALL package? What about the SOURCE package? Well you can use the source, but you don’t need it. The module development that I’m setting you up for doesn't require the DNN source, and using the INSTALL package makes your development environment cleaner. We aren't going to be opening the DotNetNuke project when we do our module development, so why have the files sitting around for nothing? Also, if you've ever tried to use the SOURCE package for anything, you'll know it isn't easy.
The steps for setting up your development environment will apply to both the Community and Professional editions of DotNetNuke.
Installation Configuration
Once you have the version selection out of the way you can go through the installation process. While I’m not going to walk you through the minutest of details of each step of installing DotNetNuke in this post, I will at least try to point you in the right direction for each step.
Download the INSTALL package of the version of DotNetNuke you want to use in your development environment.
Extract the files in the INSTALL package to a location of your choosing, this location is where you will point IIS (the web server) when we can configure the website. In my environment I typically use c:\websites\dnndev.me\ (One item of note: you may need to right click on the ZIP file and choose Properties before extracting, on the properties window if you have an UNBLOCK option, click that. Some versions of Windows have started blocking files within the DotNetNuke ZIP files, which will cause you problems later during the actual install.)
Setup IIS
IIS is the web server that comes with Windows computers. DNN 7 requires IIS 7 or later (7,7.5,8.0), so you will need at least Windows Vista, Windows 7, Windows 8, or Windows Server 2008 R2, Windows Server 2012.
In IIS you should create a new website (Note: If you use an existing website in IIS be sure to add the HOST binding for DNNDEV.ME), and point to the folder where you extracted the INSTALL package.
Note: With DotNetNuke 7.0+, .NET Framework 4.0 is required, so be sure that your application pool is configured to run under 4.0, and not 2.0.
Set File Permissions
Setting up the file permissions for your DNN install is often the step that causes the most trouble. You should right click on the FOLDER in which you extracted DNN (c:\websites\dnndev.me) and choose properties. Choose the Security tab. You need to add permissions for the account in which your website's application pool is running under. You will want to setup the permissions to give the account Full or Modify permissions for the DNNDEV.ME folder. Which account you will use will vary based on your version of IIS, here’s a simple list of some of the default accounts based on the version of IIS.
IIS Version Operating System Account
IIS 7 Windows Vista, Windows Server 2008 localmachine\Network Service
IIS 7.5 Windows 2008 R2, Windows 7 IIS AppPool\APPPOOLNAME
IIS 8 Windows 2012, Windows 8 IIS AppPool\APPPOOLNAME
Note: If you are using IIS7.5/8.0 you’ll notice in the above table that we have APPPOOLNAME in the identity, this is because when you setup a new website in IIS a new application pool is created. In place of you should type in the name of the application pool that was created. You can also bypass this and configure your application pool to use the Network Service account instead of a dynamic account if you would like.
Database Configuration
In SQL Server you should go through and create a new database. I always create a database with the same name as the website, so in this case DNNDEV.ME. Once you have created the database, create a user that can access that database. I always use SQL authentication, turn off the enforce password requirements, and give the user DB Owner and Public access to the DNNDEV.ME database. Remember the username and password you create here as you will need them when you walk through the Installation screen for DotNetNuke.
DotNetNuke Installation Screen
Populate the installation screen with the standard DNN information, Host username, password, etc. For the Database option, choose Custom and configure your database connection, providing the Server IP/Name, the Database name (dnndev.me). For the database authentication you'll want to choose the option that allows you to enter the username/password for the database user that you created previously.
Now there are two additional options you can configure, normally I would tell you not to modify these, but from a development environment perspective I do recommend that you change the objectQualifier setting. It should be blank by default, you should type in “dnn” (without quotes), this will prepend “dnn_” to all of the objects that get created by DNN such as Tables and Stored Procedures. This is not something I recommend from a production stand point, but if you are developing modules for sale, then supporting objectQualifier in your development is recommended. It will save you time down the road if you have a customer who has an objectQualifier defined on their production databases.
DotNetNuke Module Development
To get started with your DNN module development, be sure to read our tutorial on how to install our Module Development Templates.
Next, setup Visual Studio Templates (you'll want to use VS 2015) and create a project.
You can find the templates here https://visualstudiogallery.msdn.microsoft.com/bdd506ef-d5c3-4274-bf1d-9e673fb23484
Download that, run the VSIX package installer, or search through the online templates for DotNetNuke. Watch this video https://www.youtube.com/watch?v=kOoQJDeTlJ0&list=PLFpEtny5sIbb9jGxJ7RBM5hIizodOCtoj&index=1

Run application updates with non admin users

I'm using a windows installer package to distribute a winforms application to several clients and because some of them have changed their security policies I need to figure out a way to run the application updates (through the installer) for users without administration rights.
Find below some information regarding the update process:
- The installer is created using InstallAware
- During the update process the old version is uninstalled and the new version is installed.
- The installer needs admin rights because it writes to the registry and installs some windows services.
- The application is installed in the program files folder.
At this moment the solution that I'm implementing is create a new scheduler task, that runs a simple console application that check for new updates and if a new version exists it downloads the installer and executes it in silence mode (the entire installation will execute silently, without a user interface, or any user intervention. The default values of dialog controls will be used).
Some consideration about this solution:
- It's difficult to handle possible errors during the update process.
- It's not possible to alert the user that a update process is running (because the scheduler tasks runs with a different user is not possible interact with the logged user).
Has anyone ever implemented anything similar? Is this the best way to achieve my goal?
If the updates are patches, and you meet a certain set of requirements regarding the first install of the product and sign both the MSI and the patches there is a mechanism for limited users to apply patches, UAC Patching described here:
http://msdn.microsoft.com/en-us/library/aa372388(v=vs.85).aspx
If you search for LUA Patching (its original name) or Least-privilege patching there's more info out there, although it's fairly obscure. If the security policies that they have in place include setting DisableLUAPatching then you won't be able to use it.

Any way to push new version of WPF Application plus database changes (Sqlite) without using click once.

I am working on a WPF application. I need an intelligent mechanism for updating my software and some other stuff such as database (My database is Sqlite) and application pre-requisites. Also, in my update I should be able to push application as well as database changes. Click once wont suit my requirements. Whenever, a new version is available, I should be able to track it on application start and force the user to go for the new version only.
Once an application is Compiled that is it. You can make you application Data Driven and this would work, however you will have to account for all the changes you need ahead of time. Why don't you do the following:
Create your WPF application
Create a WCF service that runs on your server.
Have you WPF application poll the WCF service to check if an update occurs
Have your WPF application download the new version off your server and force the user to update.
When the application reopens make it run the webupdate version and not run the old version.
Problem to think about:
How do you want to handle if the user has no internet?

How to install DotNetNuke so I can migrate existing users?

I'm doing a fresh install of DNN 6.0.
I have an existing 4.x site with thousands of users, and my goal is to copy the users from the old database to the new one with some SQL queries. Of course the two sites must have the same machineKey.
I thought I had to set the machineKey value before running the installer, but then installation process overwrites it.
If I change the machineKey after running the installer, I can't access the host login created during the install process.
What am I missing?
I'm willing to use a third-party migration tool, but note that I'm not moving users between portals, I'm moving them between websites.
If it matters, I'm using SQL Server on Windows 2003.
An easy solution to the host login is to complete the install, and set the machine key to match your old system. Then copy the password, and passwordsalt values from a known user in your old db to your host user in your new db. You can then login with the known password.
We imported about 30k users from a different CMS using our own code in conjunction with the DotNetNuke API. This took a lot of time and resulted in password resets for all users. Due to the time involved and the fact that we had to implement a friendly "Oh by the way, welcome to the new site, but you need to change your password now" feature,
I'd recommend the following:
I believe this module from DataSprings allows you to bring over users with passwords intact from another DotNetNuke instance. It is also DNN 6 compatible.
Mitchel Sellers made this very recommendation here, and I trust Mitchel when it comes to DNN.

Run an update program immediately after ClickOnce install

I've got a small WPF application which is being deployed to a client soon. One of the prerequisites is Sql Express 2008, and the clickonce installer handles that part nicely. My issue is that, after installation, I need to be able to unzip a backed up SQL DB, restore it, and set some user privileges. I have the SQL and the code needed to do this, but I can't seem to figure out how to inject it into the clickonce install process, or how to force it to run some kind of "update" right after installation, before loading up the application. Is there any way to do this?
Consider checking IsFirstRun in your application and performing additional setup at that time. Using this method you can do just about anything you want. Here's a snippet from a webpage with more details:
Use IsFirstRun to determine whether
you need to perform any one-time
initialization operations the first
time your application runs.
Did you have a look at this? You could create a custom action.
I am not sure whether or not you will have/need elevated permissions but it might be worth a try,

Resources