
Greetings everyone! I am very excited to annouce that I have been selected to speak at the DevTeach conferenceĀ that will be held here in Vancouver from June 8-12. I spend a great deal of time blogging about working with the Telerik web controls in my SharePoint development, so I figured this would be a good opportunity to share some of the things I’ve learned and to demonstrate how easy it is to integrate these into your projects.
This is a great conference that promises to be theĀ biggest developer, DBA and ITPro conference in Canada. It’s jam-packed with advanced sessions (level 300 and 400) all on the latest versions of Microsoft products and technologies. I encourage you all to at least check it out and see if some of the other sessions or topics might appeal to you.
Hope to see you there!
I came across something very interesting last week and just wanted to make a note of it here. I’ve talked before about including prototypejs in your SharePoint application pages, but a recent announcement from Microsoft has made me consider using an alternative.
You can read about Microsoft’s news to include JQuery in Visual Studio on Scott’s blog.
“The jQuery intellisense annotation support will be available as a free web-download in a few weeks (and will work great with VS 2008 SP1 and the free Visual Web Developer 2008 Express SP1)”
I’ll be looking into JQuery in the next couple weeks to see how it performs against prototypejs and i’ll post any findings here, so stay tuned!
Erik was kind enough to post some info related to prototype and the content editor not behaving well together. It seems that JQuery might work better in this scenario. You can read more about that here.
Recently, I ran across a post from Andrew Connell where he addresses the question of moving content created in a dev environment to another environment, such as QA, staging or production. While the focus of his post was to answer that question, he did bring up an interesting point. Is it possible to use a tool like subversion to source control your SharePoint master pages, page layouts, css files etc?
It most certainly is! Andrew’s blog post will get you started on understanding how to use features and solutions to move files from one environment to another, but for those of you out there need some assistance getting subversion source control up and running, please read on.
http://subversion.tigris.org/ is the home page for the subversion source control project. The first thing you’ll need to do is download subversion. Click on Downloads on the left navigation. If it’s not entirely clear, you have two options here: you can compile the source code release directly, or you can install one of the prepackaged binaries if there is one for your operating system. I am running a Windows Server, so there were a few prepackaged binaries that I could choose from. I didn’t want to have to compile source code. I tested out CollabNet, VisualSVN and TortoiseSVN. Below is a brief summary:
- CollabNet is an installer package you can download which will install subversion and optionally apache to your server. There is no GUI, so you’ll have to be familiar with running svn commands via the command prompt to setup your respositories. CollabNet also comes with a client for use with subversion.
- VisualSVN comes with both a server and a client, however, the difference between VisualSVN and CollabNet is that VisualSVN offers a GUI for creating repositories, managing users and managing groups. It’s really simple to use, and I’ve had no issues with it so far. The client portion installs as a plug-in for Visual Studio making it really simple to interact with subversion. It’s important to note that the server product is FREE, however, the client licenses are $49 USD per user.
- TortoiseSVN as far as I can tell is a free client plug-in for Windows Explorer that allows you to interact with subversion. Again, please note here that TortoiseSVN client does not interact with Visual Studio. You can use TortoiseSVN in conjunction with VisualSVN or CollabNet subversion servers. The solution I eventually settled on and now have implemented is VisualSVN server on my Windows Server box and TortoiseSVN for my clients.
- Download VisualSVN
- Download TortoiseSVN
- The install of VisualSVN will create a new entry in your Program Files menu called VisualSVN Server Manager. This GUI will give you the ability to create repositories, add users and configure groups. Right click on Repositories and click Create Repository. Give it a name and allow it to create the default structure. If you expand your repository, you will see 3 folders: trunk, tags and branches.
- You have a couple of options from here. You can add an existing project that’s already been developed or is a work in progress into subversion or you can create a new project that is source controlled before any development begins. I’ll outline the latter briefly, you can expect to see a post about source controlling existing projects later this week.
- Once you’ve created your repository, expand that repository, click on the Trunk folder and select Copy URL.
- Using TortoiseSVN, you can right click within any folder in Windows Explorer and select SVN Checkout from the context menu.
- Paste the url you copied in step 2 in the URL of repository: field. Select the checkout directory and click Ok.
For anyone designing SharePoint Solution Packages (wsp files), typical deployment means either running stsadm commands to add a solution and then deploy it, or automating it via a script. However, if you’re building solutions that will be installed or administered by a client or a user not familiar with the stsadm command, then you’ll want to create something a little more user friendly.
That’s where MSI packaging can help. MSI packages also show up in add/remove programs and that makes it easier to manage for the end user. What i’ll outline in this blog post is some simple steps to get you going on creating MSI packages for sharepoint solutions files. To begin, i’ll assume you have already created a solution file and have it ready to go.
- Create a new Setup project: File -> New-> Project -> Other Project Types -> Setup and Deployment -> Setup Project

- Highlight the project and using the toolbar on the Solution explorer pane, select the User Interface Editor
- Configure the UI screens as you require
- On that same Solution Explorer pane, select the Custom Actions Editor and add the scripts below to the Install and Uninstall folders
- Using the File System Editor, add the wsp and license file to the Application Folder for use within the scripts below
- Building the solution will generate an msi file that you can now use to install your wsp. The msi will include all the necessary files, such as the license file, the wsp and the install scripts.
AddSolution.vbs
' VBScript File
Set oShell = CreateObject("WScript.Shell")
Dim activationUrl Dim targetDir Dim installDir
targetUrl = Session.Property("CustomActionData")
installDir = Session.Property("INSTALLDIR")
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o addsolution -filename " + installDir + "\CurrentlyPublishedPage.wsp", 0, true)
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o deploysolution -name CurrentlyPublishedPage.wsp -allcontenturls -immediate -allowGacDeployment", 0, true)
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o execadmsvcjobs", 0, true)
activationUrl = "cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o activatefeature -filename CurrentlyPublishedPage\feature.xml -url " & targetUrl
Return = oShell.Run(activationUrl, 0, true)
RetractSolution.vbs
' VBScript File
Set oShell = CreateObject("WScript.Shell")
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o retractsolution -name CurrentlyPublishedPage.wsp -allcontenturls -immediate", 0, true)
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o execadmsvcjobs", 0, true)
Return = oShell.Run("cmd /C C:\Progra~1\Common~1\Micros~1\webser~1\12\BIN\stsadm -o deletesolution -name CurrentlyPublishedPage.wsp", 0, true)