So there are already a few guides out there on how to make a Silent(In the sense that it don’t ask you for your username and password) LogMeIn installer. I am going to show you the way I do it with step by step instructions so that anyone can follow.  This tutorial will be broken into two parts. Part 1 is for customizing the LogMeIn installer. The second part is for making your own. Disclaimer this tutorial is for educational purposes only.

Part 1 – Customizing the Installer:

Last updatede on September 17, 2009 to reflect the newest version of LogMeIn version 4.0.0.966 (Sep 5 2009)

Get the tools that you will need to complete this job:

Download Orca – Orca is a MSI editor. It allows you to change the title and text of any MSI installer.
LogMeIn.com – Log into your LogMeIn account and download the installer. 

Download me in installer to a folder on your desktop. Make a copy and name it LogMeInClean.msi incase you corrupt your installer and have to restart.

Step 1: Edit the OnInstallExecuteSequence Table:

Find the installer you just downloaded and right click on it and select “Edit with Orca”

Find InstallExecuteSequence under the table list on the left hand side, then do the following: 

  1. Select GetDeployInfo under the action list. 
    Change: UILevel=2 AND UPGRADEPRODUCT<>1 AND InstallMode<>”Remove”
    into: UPGRADEPRODUCT<>1 AND InstallMode<>”Remove”         

  2. Right click on the right panel and select “Add Row”:
    ACTION: GetLMIRegistrationCookie
    CONDITION: NOT Installed
    SEQUENCE: 3710         

  3. Right click on the right panel and select “Add Row”:
    ACTION: LMIGetLicense
    CONDITION: NOT Installed
    SEQUENCE: 3730         

  4. Select CreateUser under the action list. 
    Change: CANCREATEUSER AND PASSWORDSOK=”true” AND VersionNT AND REMOVE<>”ALL”
    into: VersionNT AND REMOVE<>”ALL”         

  5. Select CreateUserSetProperty under the action list. 
    Change: CANCREATEUSER AND PASSWORDSOK=”true” AND VersionNT AND REMOVE<>”ALL”
    into: VersionNT AND REMOVE<>”ALL”         

  6. Right click on SetX64Path and select “Drop Row”
    Right click on SetX86Path and select “Drop Row”

Find Property under the table list on the left hand side, then do the following: under the table list on the left hand side, then do the following: 

  1. Select LICENSETYPE under the action list.”
    Change: 5
    into: 0       
  2.  Right click on DEPLOYID and select “Drop Row” Important note, since installers can be reversed make a LogMeIn account which only has the ability to add computers, then move them out of that user’s name.  Once they are installed. Use this account for the following steps.  To make an account login to your LogMeIn account and click users on the left hand side. Then add a new Administrator, and give that account the ability to Deploy Computers. When a new computer is added you will want to edit that user and remove rights to that computer if you choose to do it this way.
     
  3. Right click on the right panel and select “Add Row”:
    property: USEREMAIL
    value: Your account’s email address  

  4. Right click o n the right panel and select “Add Row”:
    property:USERWEBPASSWORD
    value: Your account’s web login password
         

  5. Right click on the right panel and select “Add Row”:
    propertyUSERPASSWORD
    value: Password if no windows password present         

  6. Right click on the right panel and select “Add Row”:
    property: USERVERIFYPWD
    value: Password if no windows password present If you need to configure LogMeIn for a proxy look for the proxy settings in the action list.       

     

Then in Orca click File then Save. Make sure you do save and not save as, this is because Orca only saves the different changes, if you notice you have a tiny file like .5mb then you did it wrong. 

  

Part 2 – Making the Installer:

Get the tools that you will need to complete this job:

Download Inno SetupInno Setup is a free installer for Windows programs. 

Download the Setup Kit – A simple kit I have put together for you to create a custom installer. Change the images to meet your needs.
That is it, make sure you leave your comments.

 

Most of this information came from http://www.msfn.org/ by writting this post I hope to save you from digging through 8 pages of post, and give you the most relavent information for the newest version of LogMeIn.

 
Edit:
08/02/09:
Thank you Dale for pointing out a spelling mistake and an error.

Akismet

Many avid bloggers are already familiar with Akismet and rightfully so.  Akismet does an amazing job of eliminating spam. It will catch 99% of spam and put it in the spam queue.  Head over to http://akismet.com/ and install Akismet. You will need to sign up for a WordPress account and get an API key. Don’t worry it takes 2 seconds and is worth it. Once Akismet is installed need to go to your Akismet Configuration, which is under plugins, and enter your WordPress API key. There is also a check box label “Automatically discard spam comments on posts older than a month.”  I chose to uncheck this. With this checked if Akismet detects spam on a post you wrote over a month ago it will just delete it. While Akismet is really good there is a chance you could lose some legitimate comments. If you combine this plugin with the one below there is really no use for this. However the choice is yours.  After that it is just a matter of waiting and letting Akismet do its work.

Akismet will install a little control panel to view statistics it will look something like this:

Akismet Control Panel

From the WordPress dashboard you will want to check your Spam Queue to make sure that no legitimate messages get through. It does not happen often, but it does.

WP-Ban

Akismet does an amazing  job of stoping spam comments from getting to your inbox. How about stoping spam before it ever gets submitted? That is were WP-Ban comes in. WP-Ban can be found at http://wordpress.org/extend/plugins/wp-ban/

Basically this can be used to block anyone from ever viewing your blog on the IP level.  Granted many spammers will jump though proxies and use 10 different IP’s in a minute. I noticed that I was getting 100’s of spam comments from 1 or 2 IP addresses. I would block that one IP for example the following 4 IP addresses accounted for over 400 spam comments in a day:

194.8.75.149
194.8.75.163
194.8.75.220
194.8.74.220

Blocking those 4 IP address pretty much stopped my spam.

I would be very selective in blocking IP addresses, do not use ranges and never block your own IP.  Over the past week I have seen spam almost stop dead in it’s tracks.

Alternate Case/Format selection:

Have you ever been asked to update some code from a long time ago only to find that almost every tag is in capital letters?  AGHH!

<HTML>
<HEAD>
<TITLE>My Really Old Site</TITLE>
</HEAD>
<BODY>

<P> Lots of body test </P>
<P> Lots of body test </P>
<P> Lots of body test </P>

<IMG SRC="mypic.jpg" width=351 height=113>

</BODY>
</HTML>

Highlight all that code and press CTRL + K then CTRL + F and you will format all the code. It would then look something like this


<html>
<head>
<title>My Really Old Site</title>
</head>
<body>
<p>
Lots of body test
</p>
<p>
Lots of body test
</p>
<p>
Lots of body test
</p>
<img src="mypic.jpg" width="351" height="113">
</body>
</html>

Granted your code may still be far from perfect, but it is definitely a huge help.

Key Launcher (Like Alt + Tab on Windows)

Are you someone that lives by keyboard shortcuts? I know I am.  Are you familar with Windows Alt + Tab keyboard shortcut and toggling through all active programs? Well a similar feature exists within Visual Studio press Ctrl + Tab and toggle through your active Windows and Files.

Visual Studio Ctrl + Tab

Intellisense

Control + Spacebar will bring up intellisense if you are in code view. Great if you click out by accident or you just want to see what is available in the scope of the code.

Visual Studio Intellisense

Break Points

Have a bunch of break points scattered over a couple of files in a solution. Just want to delete them all and start fresh. Ctrl + Shift + F9 will delete all current break points in a solution. Don’t worry Visual Studio will prompt you with a confirmation first.

Get Visual Studio Professional for free!

Well maybe. If you are a student like myself you can head over to https://www.dreamspark.com/which is run by Microsoft. They offer full versions of some of the newest Microsoft products, like Visual Studio. Why? Because they know we are the future and they think we are an investment. Take them up on the opportunity and get ahead of the competition.

Shortcut key posters:

Microsoft Visual Studio has a bunch of keyboard combinations that can be very helpful, to get a more complete list check out some of the resources Microsoft offers:

Visual Studio Key Reference Posters

Visual C# 2008 Keybinding Reference Poster

Visual Basic 2008 Keybinding Reference Poster

Visual C++ 2008 Keybinding Reference Poster

Visual C# 2005 Keyboard Shortcut Reference Poster

Visual Basic 2005 Keyboard Shortcut Reference Poster

Visual C++ 2005 Keyboard Shortcut Reference Poster

This was a problem I racked my brains over for a while when I first started using SSIS. I found a few possible including using a File System task to copy a “Template” Excel file over the existing on, or generating unique files by appending the date.  I simply wanted to overwrite the existing data just like the Flat File Destination gives you that option.

My workaround was as flows:

Create the Data flow the way you normally would, then go to the Control View Then add two Execute SQL Tasks before your data flow is called so it looks like this

Step 1: Add Execute SQL Task 1 to Control Flow
Step 1: Add Execute SQL Task 1 to Control Flow

Set both Execute SQL Tasks to use the Excel file

Step 2: Set Connection Manager
Step 2: Set Connection Manager

Set your first Execute SQL Task’s SQL Command to drop your table which is also known as the sheet name of your Excel file.

Step 3: Drop Table
Step 3: Drop Table

Repeat step 3 on the second Execute SQL Command this time create your tables.

If you are new to SSIS or looking for some more advanced help, one of my favorite books is Professional Microsoft SQL Server 2012 Integration Services you should check it out.

Music is everywhere with today’s high speed internet is most home it is no wonder that music is even moving to the World Wide Web. Many radio stations allow you to stream their stations over the internet. Many websites have been developed around music, like www.jango.com, www.pandora.com, and www.last.fm. I recently released my second version of Jango Desktop and one of the features I implemented was the ability to look up lyrics. Before I started I was thinking about all the ways I could parse the lyrics out of an existing lyric’s websites database. During my searching I stumbled upon http://lyricwiki.org/. Here is a small description of LyricWiki from the website:

LyricWiki is a free site which is a source where anyone can go to get reliable lyrics for any song, from any artist, without being hammered by invasive ads.

At this point you are probably thinking to yourself the same thing I did “Great, but where do I start?” So today I am writing a step by step tutorial on how to use Lyric wiki in your .NET program.

Creating a simple lyric demo program:

Step 1 Create the Form

Step 1: Create the Form

Open visual studio and setup your form to look similar to mine.

Adding the web service:

Because LyricWiki offers a web service, you will want to add it to your program as a web reference. Right click on your solution and select add a web reference, or in .net 3.5 add a service reference -> then go to advance and add a web reference. The service’s URL is http://lyricwiki.org/server.php?wsdl you will want to add it like below if you press go you should see the available methods.

Adding a Web Reference

Adding a Web Reference

Writing the code:

Double click on your button on the form and let’s right some code to handle the lookup.

Add this to the top of your code:


using LyricsLookup.org.lyricwiki;

Then add this to the button clicked method:


private void LyricsButton_Click(object sender, EventArgs e)

{

LyricWiki wiki = new LyricWiki();

LyricsResult result;

string artist = artistTextBox.Text;

string song =   SongTextBox.Text;

if(wiki.checkSongExists(artist,song))

{

result = wiki.getSong(artist, song);

Encoding iso8859 = Encoding.GetEncoding("ISO-8859-1");

LyricsRichTextBox.Text = Encoding.UTF8.GetString(iso8859.GetBytes(result.lyrics));

}else{

StatusLabel.Text = "Lyrics not found in database";

}

}

Then run and test.

Download the full solution of LyricsLookup