Tuesday, September 30, 2014

Removal/uninstall of AVG Antivirus fails

I was recently helping a friend install Mcafee Total Protection Antivirus on their computer.  As many people know, Antivirus software from one company is not compatible with another company's antivirus solution.

So, of course, Mcafee Total Protection attempted to uninstall AVG Antivirus from the system.  Unfortunately, at the end of the uninstall process, AVG displayed an error message that it could not be removed!!

Well, after several attempts to uninstall it from the machine, we did a quick Google search and found out that this is a common issue for many users and it is readily solved by running a Removal tool that AVG provides directly from their website: http://www.avg.com/us-en/utilities

After running the AVG Remover tool, I was able to successfully remove AVG Antivirus from the system and install Mcafee Total Protection!


Monday, September 29, 2014

Assigning Static IP Addresses to Windows Azure VMs

If you need to configure a Windows Azure virtual network and want to assign Static IP addresses to your Windows Azure Virtual Machines, you can do so directly through PowerShell:


This method basically sets up IP Address binding for the specific VMs in your virtual network similar to how you would set up MAC Address Static IP routing on a router on your own home virtual network.

This avoids the trouble of having to statically set the IP Address in the Network Adapter settings and allows it to be controlled centrally through the Windows Azure Virtual Network.

Therefore, if you need to set up communication between your Windows Azure VMs, this is a handy way to ensure that the Windows Azure VMs that are communicating with each other do not change IP addresses between reboots or other VM operations.  For example, if you are setting up TFS (Team Foundation Server) in the Windows Azure cloud, you may need to rely on your TFS Build machine reliably deploying to the same server on a consistent basis.  If the IP Address of your deploy VM changes, this can break your build and deploy process and therefore ruin your overall CI (Continuous Integration) strategy.  By setting the IP address statically, you can avoid the headaches associated with managing your CI strategy across multiple Windows Azure VMs.

NOTE: However, one thing to note regarding setting static IP Addresses to your Azure VMs, is that if you have already configured Primary and Secondary DNS Servers to your Network Adapter, then these values will be wiped out immediately after assigning a Static IP Address to the Azure VM.  You will have to re-add this information back into the Network Adapter once the Static IP Address has been assigned to the Azure VM.  

Sunday, September 28, 2014

Switch between apps slideout does not go away

I just recently bought a Windows 8.1 laptop that worked both as a touchscreen as well as a regular laptop with a touchscreen.

I was using a Metro App from the Metro Start menu and as soon as I opened my Metro application, I ended up with a slideout "Switch between apps" that did not automatically go away when I opened my Metro app!

No matter what I did in the Metro Start menu, I could not make this slideout disappear!! 

Fortunately, after doing a bit of searching for posts on this problem, I discovered, that you have to simply hover your mouse in the upper left hand corner of the screen in order to get this "Switch between apps" slideout to disappear!

I even found a YouTube video which demonstrates how to resolve this annoying problem/issue: https://www.youtube.com/watch?v=7-x6sQ0WNuo

Wednesday, September 24, 2014

Running Virtual Machines in Windows Azure Virtual Machines

If you want to leverage the existing Windows Azure Virtual Machine infrastructure to run older/legacy VMs such as Windows XP and Windows Server 2003, fortunately, you can do just that!

Here is an article that describes how to do just that: http://fabriccontroller.net/blog/posts/running-a-legacy-os-in-a-windows-azure-virtual-machine-windows-xp-windows-server-2003/

As you can read from the post, only Oracle VirtualBox will support running in a Windows Azure Virtual Machine.

However, there are also a few points when setting up the VirtualBox VM that are not mentioned:

  1. You should install the Oracle VirtualBox Extension Pack in order to ensure everything works regarding mouse and keyboard input etc.
  2. You will probably need to add a Windows Firewall exception in the Windows XP machine or turn off the Windows Firewall completely
  3. You need to set up the VM using NAT in order to use the Port Forwarding feature.  You can set up NAT either in the Preferences of Oracle VirtualBox or configure it on a machine-by-machine basis.  Using other networking options will not work.
  4. When you set up NAT, you will need to configure the Guest IP address as the target for Port Forwarding.  If the Guest IP address is not configured, Port Forwarding may not work.
  5. You may also need to set up the Remote Display feature in order to get RDP to work correctly (Display-->Remote Display)
Leveraging the Windows Azure Virtual Machine infrastructure is very handy if you need to do some testing on older legacy Windows OSes until you phase out support for them completely.  As many IT users know, numerous applications still only work on Windows XP which is why it has been so difficult for Microsoft to completely drop support for Windows XP for so many years.

As an experiment, I decided to see if I could also get Windows 7 or Windows 8/8.1 running on VirtualBox inside of a Windows Azure VM and I got the error message "AMD-V is not supported".  Therefore, you can only run older legacy OSes on VirtualBox inside of a Windows Azure VM.

Download Legacy Windows VMs

If you have a need to test older versions of Internet Explorer or need to run legacy applications that will only run on an older version of Windows (such as Windows XP), fortunately, you can download older versions of the Windows OS available as virtual machines directly from Microsoft!

You simply go to https://www.modern.ie/en-us.  You then click on the link for Virtual Machines and download a virtual machine for the specific virtualization platform that you are using: https://www.modern.ie/en-us/virtualization-tools#downloads

 That is all there is to it!!

Monday, September 22, 2014

Migrating VSS to TFS

I was recently working on a project where they still were using VSS (Visual SourceSafe) and had not yet migrated to TFS (Team Foundation Server).

Several years ago, I had done a large VSS to TFS migration and it was an extremely tedious and painful process requiring the use of a command-line utility as well as an XML mapping file.

Well, fortunately, a few years ago, Microsoft released a GUI VSS Upgrade Wizard that eliminates the need for all of that manual effort:  http://visualstudiogallery.msdn.microsoft.com/867f310a-db30-4228-bbad-7b9af0089282

The tool actually states that it only supports TFS 2010 and TFS 2012, but it worked just fine for migrating to TFS 2013 as well.

The overall guidelines to upgrade from VSS to TFS can be found here: http://msdn.microsoft.com/en-us/library/ms253060.aspx

In order to prepare to upgrade from VSS, you can read the guidelines here: http://msdn.microsoft.com/en-us/library/ms253127.aspx

The preparation to upgrade basically involves:

  1. Knowing the Admin password to the VSS database
  2. Having Administrative access to TFS
  3. Installing VSS 2005 on a computer that also has access to TFS
  4. Running Analyze on the VSS database (and fixing/repairing the VSS database if necessary)
In addition, here are some other considerations when working with your VSS database that are not always well known:

  1. Each VSS database should preferably be 4 GB or smaller.  If you have a VSS database that is larger than this, you may encounter very lengthy analysis times in preparation for your upgrade.
  2. If you need to trim down/shrink the size of your VSS database, you can do this by archiving.  However, archives can only be 2 GB or smaller.  Therefore, this may require picking and choosing your folders that you need to archive in order to achieve this limit.  VSS, unfortunately, does not offer any assistance with chunking out archives to that they fit into the 2 GB limit.
  3. If you have forgotten your Admin password, you may be able to reset the Admin password using this utility: http://not42.com/wp-content/ResetVSSPassword.zip.  (Instructions for using this tool can be found here: http://victormaceda.wordpress.com/2009/02/11/reset-vss-admin-password-to-blank/)   If this does not work for you, you may be able to reset the Admin password as long as you have another Administrative account in VSS.  Otherwise, you may be out of luck since the TFS VSS Upgrade Wizard requires the Admin password in order to perform the migration. 

Once you are ready to upgrade, you can follow the steps to upgrade your VSS database to TFS: http://msdn.microsoft.com/en-us/library/jj612883.aspx

 If all goes well, you have successfully migrated VSS to TFS!!

Thursday, September 18, 2014

Limitations of PowerShell ISE

As a developer, one of the features that I use most in nearly any IDE is the Comment/Uncomment feature while I am writing code or scripts.  This allows me to easily test out a piece of functionality and then comment it out until I finally get all the pieces working the way I want.

Therefore, most IDEs and editors typically have this functionality built-in, so I was very shocked to discover that the PowerShell ISE DOES NOT have this feature!!  (Can you believe it??)

In the past, I have simply reverted to using PowerGUI or Sapien Technologies PrimalScript, but since PowerGUI was recently purchased by Dell, PowerGUI has not had any updates in the last several months. 

Therefore, it seems that the only full-featured AND regularly maintained PowerShell Editor now on the market is Sapien Technologies PrimalScript!  The tool is a bit pricey but if you regularly work with PowerShell scripts, the cost is well worth it.  You can download a trial version of PrimalScript from here to test it out for yourself: http://www.sapien.com/software/primalscript

Hidden costs associated with hosting on Windows Azure

If you currently host content such as Virtual Machines on Windows Azure, you may know that Microsoft has created a very nice self-service portal to manage most of the activities and operations that are required for working with Windows Azure.

However, what do you do if something does not work as expected (gasp!  a defect/bug???)

Well, even though Microsoft heavily advertises the free benefit of hosting in the Windows Azure cloud as part of your MSDN Subscription, what you may NOT know is that there is absolutely NO TECHNICAL SUPPORT!  Yup, you read that correctly!!

If something goes wrong with anything you are doing in the Windows Azure cloud, you are left to try and figure things out yourself or try and post a question on the Community Forums and hope that you get an answer.

So, what do you do if you want Technical Support?  Well, Microsoft says you have to pay for it!  http://azure.microsoft.com/en-us/support/plans/

The lowest tier of support is pretty affordable (just $29/month), but that still comes out to $360/year and "Developer" support may not provide an acceptable level of support for your business/company which means that you are looking at the next tier of support which is a whopping $300/month!!!!  Whoa!!

So, even though Windows Azure is a very enticing option, if you need Technical Support for content that you host in the Windows Azure cloud, you will now know the price of getting that support.

For many organizations/companies, Windows Azure may still remain just an afterthought when it comes to affordable cloud hosting and other hosting providers such as RackSpace may still seem much more viable solutions comparatively.

Wednesday, September 17, 2014

Visual Studio 2013 and Jetbrains Resharper problems

As far as add-ons and extensions are concerned, Jetbrains Resharper is definitely one of my favorites because of its rich feature set and functionality.

Unfortunately, that does not mean that Resharper has not caused me its share of grief and frustration while using it.

In the early days of using Resharper (with Visual Studio 2003) the Visual Studio IDE would eventually become so slow that I stopped using Resharper altogether and opted for more lightweight extensions such as CSharpCompleterPlus and various others.

When using Resharper with Visual Studio 2008 and Visual Studio 2010, I would frequently notice that the IDE would completely lock up or freeze when doing an analysis of a large solution.  Many times the IDE would completely crash.

Now, with Resharper and Visual Studio 2013, I encountered a new problem that I have not encountered in the past.  I was attempting to edit some files that were bound to source control and much to my amazement I could not edit the files in Visual Studio!!  The files had become completely unresponsive to any edits within the Visual Studio IDE!!

Of course, as you can probably guess, I was forced to uninstall Resharper and once I did that I was able to edit my files once again!!

Joining a Windows Azure VM to a Windows Azure VM-based Domain/Forest

When you are setting up a virtual network in Windows Azure in order to host multiple virtual machines that will be part of a locally installed Active Directory Domain/Forest, there are several things you should know:

  1. You can assign a Windows Azure VM a Static IP Address by running a series of PowerShell commands as described in this article: http://www.bhargavs.com/index.php/2014/03/13/how-to-assign-static-ip-to-azure-vm/
  2. Even though you assign a Static IP address to the Windows Azure VMs using the PowerShell commands, you may still need to go into the Network Properties for the Network Adapters on the VMs that will be joined to the domain and change their Primary and Second DNS Server IP Addresses.
  3. If you are unable to connect to the Internet from a VM that is joined to the domain, you may need to add additional DNS Servers such as Google Public DNS to the Network Adapter TCP/IP Properties or else add the DNS Servers to the Virtual Network settings in the Azure Management Portal.
  4. If you change the DNS Server IP Addresses for a VM, you may have to wait a few minutes (typically 15 minutes) or initiate a reboot before you may be able to join the VM to the domain in order for the server to be able to recognize names on the network from the domain.
  5. When joining another VM to the existing domain, you will need to use the FQDN (such as corp.contoso.com) rather than simply the NetBIOS shortened domain name (CORP or CONTOSO).
Hopefully these helpful hints will resolve any issues that you may encounter when working with virtual networks and setting up an Azure VM-hosted domain!

Re-creating Windows Azure VMs

I recently encountered an issue where one of my Windows Azure VMs was completely unresponsive to connection requests even though the Azure Management Portal stated that the virtual machine was running!

I followed the troubleshooting steps outlined here: http://social.msdn.microsoft.com/forums/azure/en-US/538a8f18-7c1f-4d6e-b81c-70c00e25c93d/troubleshooting-endpoint-connectivity-rdpsshhttp-etc-failures?forum=WAVirtualMachinesforWindows

I first tried deleting the RDP endpoint and re-creating it.  As you can already guess this did not work.  I also tried resizing the VM, once again, same result.

So I was finally left with the option of re-creating the virtual machine.

When you click on the Delete icon for the selected virtual machine, select the option "Keep Attached Disks"

Next, when you click on Create a New Virtual Machine-->From Gallery, select the option "My Disks".  This is where you can select the existing VHD from the virtual machine you just deleted.

When you re-create the virtual machine, you will be prompted to select the Cloud Service, so you should select the same cloud service the virtual machine was using earlier.  In addition, you will be prompted to provide a host name for the virtual machine.  If you remember the old host name of the server, you should use the previous host name to ensure everything works correctly just as it was working earlier.

If all of the steps were followed correctly, you should be able to log into your newly restored virtual machine!!

That is all there is to it!!

Friday, September 12, 2014

Limitations of Sitefinity v. 7.x

If you are using Sitefinity v. 7.x, here are some MAJOR limitations to the platform that might influence whether or not you consider migrating to the Project Feather platform (when it is released):

  1. The Sitefinity project is still built on .NET v. 4.0.  There is no .NET v. 4.5 (or v. 4.5.1) release nor are there any current roadmap plans to add support for .NET v. 4.0.  While .NET v. 4.5 is a minor change from .NET v. 4.0, it still requires Web.config changes.  In addition, features that are specific to .NET v. 4.5 and above (such as Model Binding in ASP.NET Web Forms) are not available because Telerik still references the .NET v. 4.0 assemblies and not the native .NET v. 4.5 assemblies.  Of course, you can spend countless hours upgrading the project to support .NET v. 4.5 all around, but what happens each time you want to run an upgrade??  If time is money, you can easily spend thousands of dollars supporting upgrades to Sitefinity just to run .NET v. 4.5 (and who really wants to go through that hassle)?
  2. The Sitefinity project includes Telerik.Reporting assemblies but you cannot use them with Visual Studio 2013 because the assemblies don't support integration with Visual Studio 2013.  There is also no roadmap plan to include later versions of these assemblies.  Therefore, if you decide to use newer versions of these assemblies, it will also require additional assembly redirects in the Web.config (and always having to deal with this with each subsequent upgrade)
  3. The Sitefinity project still references ASP.NET MVC 4!! In addition, if you want to support ASP.NET MVC 5 and the features included with MVC 5, you are probably out of luck since even the latest release of Sitefinity v. 7.1.5200 does not yet support MVC 5.  You may be able to update and upgrade all of the Web.config files and the associated project references to add support for MVC 5, but once again you will have to deal with this on each and every project upgrade.  
On the bright side, Project Feather (http://projectfeather.sitefinity.com/) seems to be more loosely coupled than the original releases of Sitefinity since v. 4.x, but there is no clear direction as to when Project Feather will become integrated into the mainstream release of Sitefinity or if it will remain as a side project all on its own.  As of this writing, Project Feather still only has support for ASP.NET MVC 4 and has not been formally released to RTM.

So, if you are currently doing modern development using all the latest technologies and versions (Visual Studio 2013, Entity Framework, ASP.NET MVC , Web API and .NET v. 4.5 or later), you may well be out of luck until the Sitefinity team decides to update and upgrade their current solution or at least wait until Project Feather is released to see if it holds a brighter future than the current release of Sitefinity.