Tuesday, March 07, 2006

Explorer Shell Extension to Create and Delete NTFS Hard Link/Junction/Reparse Points

Link Shell Extension 

"The NTFS filesystem of NT4/W2K/WXP/WXP64 supports HardLink functionality, but HardLinks can only be created via the POSIX command ln, which is shipped with the Windows resourcekit. Even if with POSIX commands, HardLinks can only be created via the command prompt, which is a kind of a mess for many files.

The Link Shell Extension implements a extension to the Windows shell explorer, so that HardLinks, Junctions, and SymbolicLinks can be comfortably created via right mouse click on a selection of one or multiple files.

The Link Shell Extension is also available for WindowsXP64.

 
..."

Very nice. This and this, Junction Shell Extensions 1.1 Released (for the junction icon overlay), make for a powerful pair.

Does this shoot down the last excuse for not using hard links, junctions, reparse points, symbolic links, etc, etc?

(via SHELL EXTENSION CITY)

Technorati Tags: , , , , ,

Monday, March 06, 2006

Now THIS is a Hybrid...

Street-legal jet powered VW Beetle


street_legal_vw_powered_1



If I do something like this to my Honda Civic Hybrid, would that make it a Tribrid?  ;)

Sunday, March 05, 2006

"Animated Engines"

Animated Engines



"I have loved mechanical things since I was a kid.  Engines in particular have always intrigued me.  All my life I’ve pored over books, studying cutaway diagrams, hungry to understand how things worked.  These pages are an attempt to share that magic.



Some of the animations are rather large, so you may need to allow a few extra seconds while each page loads.  These pages use animated GIF files, so they require a fairly recent browser -- any but the oldest browsers will do.  If the main illustration at the top of each page isn’t moving, you’ll need to update your browser for the full effect.



I hope you enjoy  visiting my engine pages as much as I have enjoyed creating them"


352006otto



I was trying to describe how a four stroke engine worked to my son the other day... A picture really can be worth a thousand words (and a number of badly drawn images on napkins ;)



There are a number of other engine animations, along with a How To, if you’re interested in doing something like this yourself.



(via MAKE: - Animated Engines)

"Tagging emails in Outlook"

Tagging emails in Outlook



"It is a constant battle in my job to stay on top of my inbox. I was just about managing it with a conventional folder/sub-folder setup but when I was promoted before Christmas the volume increased dramatically and I quickly began to drown. Inspired by how effective tags are at sorting and organising stuff I decided to see if I could hack tagging into Outlook.



After some tweaking and playing around I hit upon the following technique. It is based in part around David Allen’s Getting Things Done methodology (which I also use).



This method works in both Outlook 2000 and Outlook 2003. The screen shots and instructions here are for Outlook 2003.
..."



Ever wanted to tag your emails in Outlook? Based on this post, categories may just be your ticket...



(via del.icio.us/tag/outlook - del.icio.us/redfury/outlook)



Technorati Tags: , , ,

Saturday, March 04, 2006

VM Optimizer 2.0

Size does matter

"Invirus sent me a note about a product they have to opimize virtual machine images. Finally got around to trying out the product and it’s pretty slick. It basically rips through your VMs and shrink them down without affecting the OS inside of them. VM Optimizer 2.0 will work with files from both VMWare and Virtual PC/Virtual Server vhd files (although in my test I tried shrinking an identical file of both types and for whatever reason, the Virtual PC file showed better compression).
 
What was useful for me was that I had a large (7GB) VM that I wanted to move to another external drive...I ran the optimizer and it shrunk it down to 3.3GB...

 

There’s a 30 day trial available which is a full version so you can try out all the features and see if it works for you..." 

Very interesting. Sounds like a great tool for those base/master VM’s that we keep around....



Technorati Tags: , , ,

Friday, March 03, 2006

Way Back Machine - 1992 Los Angeles riots

1992 Los Angeles riots


"...On March 3, 1991 African-American motorist Rodney King had been stopped in the Lake View Terrace district by Los Angeles police assisted by other law enforcement. King, who had a record of drunk driving and was believed to be under the influence of PCP, resisted arrest and was tasered, tackled, and beaten with nightsticks by four LAPD officers (three whites and one Hispanic). The incident was captured on video by a private citizen, and it became an international media sensation and a touchpoint for minority activists in Los Angeles and the United States. Eventually the Los Angeles district attorney charged the four with the use of excessive force in the beating. Due to the media coverage of the beating, the trial received a change of venue to a newly constructed courthouse in predominantly white Simi Valley, a Ventura County city. Contrary to popular belief, however, no Simi Valley residents served on the jury, which had been empaneled in Los Angeles County; the jury was, however, drawn from nearby San Fernando Valley. ..."

<vent>

Thank You!

Having lived in Simi Valley for 34 years, it’s always rather pissed me off to see how the city and its residents have had their characters assassinated due to the results of the Rodney King trial. From popular press to even a mention in a Law & Order episode, Simi has been bad mouthed for a decade and a half due to this trial.

AND NO ONE FROM SIMI VALLEY WAS EVEN ON THE JURY!!!

</vent>

Since we’re visiting the Way Back Machine today...

I was in the National Guard during the riots (after having spent 6 years in regular Army). And our unit was one of those called up to help restore order. Of course, by the time we hit the streets it had already run its course (Lets not get me started on that topic...).

I find it a little surreal that in my 11 years in the military, the closet I got to combat was protecting this grocery store and strip mall on the corner of W Imperial Highway and Crenshaw Blvd...

One of the things I remember most was how supportive the local residents were. All day and night it seemed like someone from the local neighborhood would come by to say "thanks" or offer our squad some coffee, donuts, home cooked cookies (oh, those were good...), etc. And of course the shop owners were overjoyed to have us there.

While the riots sucked in so many ways, over a decade later one of the things I remember most is how thankful and welcoming the people of the area were...

(via Social Nonsense & Odd News - THIS DAY IN HISTORY----Rodney King)


Technorati Tags: ,

"Managing Processes and Shell API Functionality using .NET"

Managing Processes and Shell API Functionality using .NET, Part 1

"Managing a process in older versions of Visual Basic was a tedious thing. In order to achieve results, you had to write a series of steps, a lengthy series of API calls which would help in getting information about the processes running on your system, in managing processes etc. With the advent of the .NET technology, this work became easier. In .NET, you have to import the System.Diagnostics namespace. This namespace allows you to interact with system processes, event logs, and performance counters.

This article gives you a brief introduction of how the Windows OS handles processes, methods, definitions, and also explains the way it reacts with .NET. A second article will show you how to work with the Process class, and get memory and thread information about running processes.

...
Introduction

This is the first article in a series of two. The purpose of this article is to provide an introduction to the basic concepts of processes, and to explore the Process class in .NET. The first part explores the basic explanation about the functionalities of a process in such a way that they could be useful for managing application processes on your computer, either in a local or remote machine. The next article will show the usage of processes, and their various functionalities used through the .NET technology. Also, it will show you how to develop a simple program that will use the Process class, memory, and thread information about the running processes. ..."



All to often I find myself trying to figure out where the information that MS shows us in their apps comes from and how I can get at it programmatically.



This is a cool CodeProject posting that does just that for Task Manager. It examines the Processes tab of Task Manager, talking about most its  information/columns and features.



Then it talks about how you can get that same information in .Net by using the System.Diagnostics and System.Diagnostics.Process namesspaces.



Nice... It helps me respond to questions like, "Can’t you just do XYZ if Task Manager says the app is..."



Technorati Tags: , , ,

Thursday, March 02, 2006

What was I just saying about Workflow != Rules? "Windows Workflow Foundation Rules Engine"

Introduction to the Windows Workflow Foundation Rules Engine

"Summary: This article provides an overview of the rules engine capabilities in Windows Workflow Foundation (WF). It describes how conditions and RuleSets are used in WF and discusses the behavior of collections of rules, including forward chaining and tracking and tracing.

Contents
Introduction
Overview of Rules in Windows Workflow Foundation
Rules Evaluation
Forward Chaining
Forward Chaining Control
Additional Modeling Discussion
Tracking and Tracing
Conclusion
For More Information

Introduction



With the availability of Windows Workflow Foundation (WF), Microsoft is introducing new rules capabilities to the WinFX developer platform. These capabilities extend from simple conditions that drive activity execution behavior all the way up to complex RuleSets executed by a full-featured forward chaining rules engine.

The rules capability allows for the declarative modeling of units of application logic within the scope of an overall business process. Sample scenarios for rules engine technology are order validation, pricing calculation, promotion enforcement, exception process management, and claims adjudication and management.

A key objective in developing this technology was to provide a truly integrated workflow and rules experience. Across the industry, rules and workflow have typically been quite distinct technologies, usually provided by different vendors. Third-party rules engines are often embedded or integrated by workflow and Business Process Management (BPM) providers, but the developer and administration experience is clearly not a seamless one.

With WF, Microsoft has been very focused on providing a seamless developer experience between workflow and rules modeling, so as to allow developers to easily incorporate rules at any point in their workflow. Developers are able to make the determination of whether to model their logic in the workflow model, rules, or code without having to worry about the integration implications of those decisions. This has been achieved, however, without sacrificing the ability to execute rules outside the scope of a workflow.

...

In addition to providing an approachable model, WF also provides a powerful evaluation engine to support complex rules scenarios, demanding forward chaining evaluation and precise evaluation control. This is delivered in a manner that provides a number of extensibility points, allowing developers to build on our platform and deliver rules capabilities in support of a wide spectrum of scenarios.

This document provides a technical introduction to the rules capabilities delivered in WF and an overview of the available features and their use. ..."


In my "Building a Rule Engine with SQL Server" post I said, "The thing I have to remember is that "Rules Engine != Workflow"... "

I guess I lied...

(via Paul Andrew - Introdution to the Windows Workflow Foundation Rules Engine)

Related Past Post XRef:
"Building a Rule Engine with SQL Server"

Technorati Tags: , , , ,

More on the Solution Build Framework (SBF) (MSBuild Tasks) From MS UK

MS UK’s Solution Build Framework (SBF) on GotDotNet


"...The Solutions Build Framework (SBF) is a set of tools and procedures that represents Microsoft Services UK’s best practice for developing and deploying enterprise applications.  SBF includes continuous integration build; automated multi box rig deployment; automated testing; automated documentation. Along with the binaries there’s some documentation on how to use SBF. We realise that this is a little thin on the ground at the moment, but we have plans to update the docs in the future.

At it’s heart lies a collection of MSBuild tasks that we’ve written to do pretty much everything that you might want to do during a build or deployment. This means that even if you decide not to follow the SBF way of doing builds, there are over 200 MSBuild tasks there for you to play with. Howard van Rooijen is has already listed them so I won’t bother doing it again.

SBF also includes our Deployment Framework. We use these tools to deploy to our rigs. They uninstall and install MSIs and allow us to have a single set of MSIs which can then be deployed to single box rigs, multi box rigs etc using XML files to define the differences between rigs.

..."

A few more details related to my post yesterday about the cool MSBuild task framework, SBF, released by MS UK.

Related Post Post XRef:
MS SDC.Tasks, a MSBUILD tasks library with over a hundred new tasks...

Technorati Tags: , ,

Class to Help Manually Update Your ClickOnce App

Using ApplicationDeployment to manually update ClickOnce applications

"Class to implement manual updates in ClickOnce applications.

With one line of code, you can asynchronously update your applications

Dim updateCO As New UpdateClickOnce("EnGraph Manager", True, True)
 
..."

As you might have guessed, I like using ClickOnce to deploy my .Net 2 apps. I’ve used other "auto-updating" methods in the past, but they have always required more work than I like to implement and keep up.

The one thing I did like about them was that it was pretty easy (once everything else was done) to add a user driven "Check for Update" feature. This lets the user check for and get updates while still in the app (like after getting an email or IM that I’ve just released a new version).

ClickOnce, by default has a check "Before application starts" or "Check for update every # hour/day/week". For my apps, polling is not a good solution (plus I just don’t like the idea of polling). Also it is an either/or option. You can’t both check at startup and poll. So polling is out for me. But I digress...

Extra coding is required to implement manual, user driven "Check for updates" in ClickOnce apps (as is also required with the other auto-update methods I’ve used). I’ve seen examples of this in different webcasts, but seeing those and implement it in the real world code is something else.

Now comes Tim Hubbard’s above post. He provides a very nice VB8 class/implementation to help me do just what I need to do.



Man I dig the Net, RSS and blogs...  :)

Technorati Tags: , ,

Wednesday, March 01, 2006

MS SDC.Tasks, a MSBUILD tasks library with over a hundred new tasks...

Microsoft Services (UK) Enterprise Solutions Build Framework (SBF): Home

"Sdc.Tasks is an MSBUILD tasks library which provides over a hundred new tasks for driving continuous integration builds, deploying and testing applications and much more.

The Solutions Build Framework is a set of tools and procedures that represents MSUK best practice for developing enterprise applications. This includes continuous integration build; automated multi box rig deployment; automated testing; automated documentation.

These downloads provide source code and binaries for all of the above, allowing a developer to take as much or as little of the functionality as required.
MSUK will keep this site updated as the tools are improved. Some informal support will also be available via the forums on this site. There will be a major update to the (currently limited) documentation in March 2006. "




From Microsoft Services (UK) Enterprise Solutions Build Framework;


"The guys at Microsoft Services UK have created a new GDN workspace for the latest incarnation of the SDC Tasks for MSBuild - basically all the tasks that were in the old SDC Build tools have been re-written for MSBuild. There are several other MSBuild Task community efforts going on at the moment - such as the MSBuild Community Tasks Project for VS 2005 and the Label Source Safe Project ...

 

Microsoft.Sdc.Tasks.ActiveDirectory.Group.AddUser
Microsoft.Sdc.Tasks.ActiveDirectory.Group.Create
Microsoft.Sdc.Tasks.ActiveDirectory.User.Create
Microsoft.Sdc.Tasks.ActiveDirectory.User.GrantPrivilege
Microsoft.Sdc.Tasks.ACTPerfTest
Microsoft.Sdc.Tasks.AssignCulture
Microsoft.Sdc.Tasks.BizTalk2002.Configure
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Deploy
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.ExportBindings
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.ImportBindings
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Undeploy
Microsoft.Sdc.Tasks.BizTalk2004.Clean
Microsoft.Sdc.Tasks.BizTalk2004.Host.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Host.Start
Microsoft.Sdc.Tasks.BizTalk2004.Host.Stop
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Bind
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.TerminateInstances
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Unbind
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Start
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Stop
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.Party.Configure
Microsoft.Sdc.Tasks.BizTalk2004.Party.ConfigureAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Create
Microsoft.Sdc.Tasks.BizTalk2004.Party.CreateAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Delete
Microsoft.Sdc.Tasks.BizTalk2004.Party.DeleteAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.Configure
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.AddReceiveLocation
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Configure
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Create
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Delete
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.RemoveReceiveLocation
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Configure
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Create
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Delete
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Exists
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Start
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Stop
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.AddSendPort
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Configure
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Create
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Delete
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Exists
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.RemoveSendPort
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Start
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Stop
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.FileTransportData
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.HttpTransportData
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.SoapTransportData
Microsoft.Sdc.Tasks.Cab.AddFile
Microsoft.Sdc.Tasks.Cab.Create
Microsoft.Sdc.Tasks.Cab.ExtractFile
Microsoft.Sdc.Tasks.Certificates.AddCertificate
Microsoft.Sdc.Tasks.CheckComponentInstalled
Microsoft.Sdc.Tasks.CheckInstalled
Microsoft.Sdc.Tasks.CheckProductInstalled
Microsoft.Sdc.Tasks.CodeCoverage.AddAssembly
Microsoft.Sdc.Tasks.CodeCoverage.Create
Microsoft.Sdc.Tasks.CodeCoverage.MergeReports
Microsoft.Sdc.Tasks.CodeCoverage.Start
Microsoft.Sdc.Tasks.CodeCoverage.Stop
Microsoft.Sdc.Tasks.CompileTestSummary
Microsoft.Sdc.Tasks.ComponentServices.Application.AddComponent
Microsoft.Sdc.Tasks.ComponentServices.Application.Delete
Microsoft.Sdc.Tasks.ComponentServices.Application.RemoveComponent
Microsoft.Sdc.Tasks.ComponentServices.Application.Shutdown
Microsoft.Sdc.Tasks.ComponentServices.Application.Update
Microsoft.Sdc.Tasks.ComponentServices.Component.Update
Microsoft.Sdc.Tasks.ComWrapper
Microsoft.Sdc.Tasks.ConsoleReadLine
Microsoft.Sdc.Tasks.StringToItemList
Microsoft.Sdc.Tasks.StringComparison
Microsoft.Sdc.Tasks.File.Delete
Microsoft.Sdc.Tasks.Folder.GetInfo
Microsoft.Sdc.Tasks.GetMetadataValueFromList
Microsoft.Sdc.Tasks.Help.DocumentExceptions
Microsoft.Sdc.Tasks.CreateGuid
Microsoft.Sdc.Tasks.CreateSateliteAssembliesFromResx
Microsoft.Sdc.Tasks.Culture

Microsoft.Sdc.Tasks.EventSource.Create
Microsoft.Sdc.Tasks.EventSource.Log
Microsoft.Sdc.Tasks.File.GetFiles
Microsoft.Sdc.Tasks.Folder.Copy
Microsoft.Sdc.Tasks.Folder.Share.Connect
Microsoft.Sdc.Tasks.Folder.Share.Exists
Microsoft.Sdc.Tasks.Folder.Share.Create
Microsoft.Sdc.Tasks.Folder.Share.Delete
Microsoft.Sdc.Tasks.Folder.Share.Disconnect
Microsoft.Sdc.Tasks.Folder.Share.ShareReturnCode
Microsoft.Sdc.Tasks.GlobalAssemblyCache.AddAssembly
Microsoft.Sdc.Tasks.GlobalAssemblyCache.GacHelper
Microsoft.Sdc.Tasks.GlobalAssemblyCache.RemoveAssembly
Microsoft.Sdc.Tasks.Help.Compile
Microsoft.Sdc.Tasks.Help.CreateProject
Microsoft.Sdc.Tasks.Help.Decompile
Microsoft.Sdc.Tasks.Help.InsertAfter
Microsoft.Sdc.Tasks.Help.InsertBefore
Microsoft.Sdc.Tasks.Help.InsertParent
Microsoft.Sdc.Tasks.LogicalComparison
Microsoft.Sdc.Tasks.MessageQueue.Create
Microsoft.Sdc.Tasks.MessageQueue.Delete
Microsoft.Sdc.Tasks.MessageQueue.SetPermissions
Microsoft.Sdc.Tasks.Msi.GetProperty
Microsoft.Sdc.Tasks.Msi.Install
Microsoft.Sdc.Tasks.Msi.Repair
Microsoft.Sdc.Tasks.Msi.Uninstall
Microsoft.Sdc.Tasks.PerformanceCounters.Add
Microsoft.Sdc.Tasks.PerformanceCounters.Remove
Microsoft.Sdc.Tasks.Ping
Microsoft.Sdc.Tasks.Registry.DeleteKeyTree
Microsoft.Sdc.Tasks.Registry.CreateKey
Microsoft.Sdc.Tasks.Registry.DeleteKey
Microsoft.Sdc.Tasks.Registry.Get
Microsoft.Sdc.Tasks.Registry.Set
Microsoft.Sdc.Tasks.Security.AddAcl
Microsoft.Sdc.Tasks.Security.RemoveAcl
Microsoft.Sdc.Tasks.ServiceProcess.Exists
Microsoft.Sdc.Tasks.ServiceProcess.Start
Microsoft.Sdc.Tasks.ServiceProcess.Stop
Microsoft.Sdc.Tasks.ServiceProcess.UpdateIdentity
Microsoft.Sdc.Tasks.Email
Microsoft.Sdc.Tasks.GetInstalledComponents
Microsoft.Sdc.Tasks.GetInstalledProducts
Microsoft.Sdc.Tasks.NativeMethods
Microsoft.Sdc.Tasks.Resources
Microsoft.Sdc.Tasks.Sleep
Microsoft.Sdc.Tasks.SourceSafe.Get
Microsoft.Sdc.Tasks.SourceSafe.LabelGet
Microsoft.Sdc.Tasks.Sql.DisconnectUsers
Microsoft.Sdc.Tasks.Sql.Execute
Microsoft.Sdc.Tasks.Sql.Access.Revoke
Microsoft.Sdc.Tasks.Sql.Role.AddUser
Microsoft.Sdc.Tasks.Sql.Access.Grant
Microsoft.Sdc.Tasks.Summary.AddToReport
Microsoft.Sdc.Tasks.Time.Diff
Microsoft.Sdc.Tasks.Time.Get
Microsoft.Sdc.Tasks.Time.Report
Microsoft.Sdc.Tasks.Tools.DevEnv
Microsoft.Sdc.Tasks.Tools.MsTest
Microsoft.Sdc.Tasks.Tools.StrongName.AddSkipVerification
Microsoft.Sdc.Tasks.Tools.StrongName.ExtractPublicKey
Microsoft.Sdc.Tasks.Tools.FxCop
Microsoft.Sdc.Tasks.Tools.StrongName.GenerateKey
Microsoft.Sdc.Tasks.Tools.Installshield
Microsoft.Sdc.Tasks.Tools.NDoc
Microsoft.Sdc.Tasks.Tools.NUnit
Microsoft.Sdc.Tasks.Tools.PreSharp
Microsoft.Sdc.Tasks.Tools.PsExec
Microsoft.Sdc.Tasks.Tools.StrongName.GetPublicKeyToken
Microsoft.Sdc.Tasks.Tools.StrongName.ReSign
Microsoft.Sdc.Tasks.Tools.StyleCop
Microsoft.Sdc.Tasks.TrimJavascript
Microsoft.Sdc.Tasks.VersionNumber.CppCodeDomProvider
Microsoft.Sdc.Tasks.VersionNumber.CppCodeGenerator
Microsoft.Sdc.Tasks.VersionNumber.CreateSourceFiles
Microsoft.Sdc.Tasks.VersionNumber.Load
Microsoft.Sdc.Tasks.VersionNumber.SplitBuildNumber
Microsoft.Sdc.Tasks.VersionNumber.Update
Microsoft.Sdc.Tasks.VirtualServer.Load
Microsoft.Sdc.Tasks.VirtualServer.RegisterVirtualMachine
Microsoft.Sdc.Tasks.VirtualServer.UnregisterVirtualMachine
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.AddNetworkAdapter
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Exists
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.OS.CheckHeartBeat
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.OS.Shutdown
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Start
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Stop
Microsoft.Sdc.Tasks.Web.AppPool.Create
Microsoft.Sdc.Tasks.Web.AppPool.Delete
Microsoft.Sdc.Tasks.Web.FtpSite.Create
Microsoft.Sdc.Tasks.Web.FtpSite.CreateVirtualDirectory
Microsoft.Sdc.Tasks.Web.FtpSite.Delete
Microsoft.Sdc.Tasks.Web.FtpSite.DeleteVirtualDirectory
Microsoft.Sdc.Tasks.Web.FtpSite.Start
Microsoft.Sdc.Tasks.Web.FtpSite.Stop
Microsoft.Sdc.Tasks.Web.ServiceExtension.AddFile
Microsoft.Sdc.Tasks.Web.ServiceExtension.DeleteFile
Microsoft.Sdc.Tasks.Web.Smtp.Create
Microsoft.Sdc.Tasks.Web.Smtp.Start
Microsoft.Sdc.Tasks.Web.Smtp.Stop
Microsoft.Sdc.Tasks.Web.WebSite.AddBinding
Microsoft.Sdc.Tasks.Web.WebSite.AddFilter
Microsoft.Sdc.Tasks.Web.WebSite.AddMimeType

Microsoft.Sdc.Tasks.Web.WebSite.AddhttpCustomHeader
Microsoft.Sdc.Tasks.Web.WebSite.DeleteFilter
Microsoft.Sdc.Tasks.Web.WebSite.FilterExists
Microsoft.Sdc.Tasks.Web.WebSite.UpdateHttpErrorSetting
Microsoft.Sdc.Tasks.Web.WebSite.Continue
Microsoft.Sdc.Tasks.Web.WebSite.Create
Microsoft.Sdc.Tasks.Web.WebSite.CreateVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.Delete
Microsoft.Sdc.Tasks.Web.WebSite.DeleteVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.Pause
Microsoft.Sdc.Tasks.Web.WebSite.Start
Microsoft.Sdc.Tasks.Web.WebSite.Stop
Microsoft.Sdc.Tasks.Web.WebSite.UnloadVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.UpdateServerCertificate
Microsoft.Sdc.Tasks.Wix.CompileMsi
Microsoft.Sdc.Tasks.Wix.Fragment
Microsoft.Sdc.Tasks.Wix.LinkMsi
Microsoft.Sdc.Tasks.Xml.CanonicalizeFile
Microsoft.Sdc.Tasks.Xml.GetValue
Microsoft.Sdc.Tasks.Xml.ModifyFile
Microsoft.Sdc.Tasks.Xml.XslTransform
Microsoft.Sdc.Tasks.Zip.AddFile
Microsoft.Sdc.Tasks.Zip.Create
Microsoft.Sdc.Tasks.Zip.ExtractFile
Microsoft.Sdc.Tasks.Zip.JSEnumerationWrapper
Microsoft.Sdc.Tasks.Zip.ZipManager"



All these make me want to play with MSBuild. Just think of the cool build processes I can do with all these! Muhahahaha...

(via Howard van Rooijen’s Blog - Microsoft Services (UK) Enterprise Solutions Build Framework)



ClickOnce Trick - supportURL

Specifying Individual Support URLs for ClickOnce Prerequisites

"... just finished a bunch of work on the ClickOnce documents regarding Platform Detection, which ClickOnce uses to check that the operating system and installed CLR are of the appropriate version, and also that any controls required to be installed in the GAC are installed. If ClickOnce detects that one of these prereqs is missing or doesn’t match what the ClickOnce application manifest requires, it halts installation and displays a failure dialog to the user.

An undocumented feature - undocumented until now! - is that this failure dialog can contain a support URL, pointing to a page with more information about how to resolve the failure. E.g., a dependency on a GAC-installed component can point to a page that contains a link to an MSI that installs it.


 

...

You have to hack this in to the application manifest by hand, and then re-sign the application and deployment manifests. Also, the URL will not display unless your app has full trust.

I have a How to about this that will be published later this year. For now, here are the relevant application manifests snippets that show the supportUrl.
..."

Nice. The more information you can provide a user having ClickOnce install issues the better...



Technorati Tags: ,

Free ISBN REST Web Service from ISBNdb.com

Free ISBN Web Service



"From The Programmable Web comes word of ISBNdb.com, a large database of books indexed by ISBN. Of interest to developers is the fact that there is a complete (and free) REST API. Items in the site are organized (and accessible) via book, subject, category, author, and publisher index.

 

Several (ok, many) ECS developers have asked me for similar services over the past year or two and it is great to see this new and powerful service in action...."



Nice. I still have my "My Bookshelf" project on the... um... books... so this will come in handy.



ISBNdb provides a refreshingly simple API, yet it delivers almost all the information I need. The only thing it doesn’t provide is a URL for an image of the book’s cover. Still that’s easy enough to get via the Amazon API (where as for the rest of this information, the Amazon API is way over kill).



I guess I have no more excuses? (lol... I can always come up with another excuse. Heck my excuse API is very full featured! ;)



Technorati Tags: , , ,

"Free USB Thumb Drive from Microsoft"

Free USB Thumb Drive from Microsoft

"Microsoft is giving away free USB Drives. Simply go here and then click on "Valuable Information" on the right side of the screen.

Too easy -- and it’s free!!!"

Because you can never have enough thumb drives...  ;)

Extended and Date Winform Textboxes

VB.NET User Controls: Extended and Date Textboxes

"This article offers two user controls that are alternatives to the standard VB.NET TextBox.


  • DateTextbox ... an aggregate of a standard TextBox and a calendar button.

  • ExtendedTextbox ... adds six properties to the standard TextBox for controlling textbox behavior.
...
DateTextbox


The DateTextbox is an aggregate of a standard TextBox and a Button. When the button is clicked, a calendar is displayed....

ExtendedTextbox


The ExtendedTextbox can be used in any VB.NET project as a replacement for the standard TextBox. This user control adds several extension properties that can be used to determine how the textbox will respond to keystrokes, and what happens when the textbox gets and loses the focus.

 

_HighlightText Boolean

When true, any pre-existing text is highlighted when the textbox receives the focus. The user can replace the pre-existing text by just starting to type. When false, text is not highlighted and the insertion cursor is placed at the end of the text.

 

_TrimSpaces Boolean

When true, any leading and trailing spaces are removed from the text when the textbox loses the focus.

 

_Keystrokes Multiple options

All ... Accepts all keystrokes the same as the standard TextBox.

LettersOnly ... Accepts upper and lower case letters (a-z, A-Z) and space (to accept only lower or upper case letters, set the standard CharacterCasing property).

NumbersOnly ... Accepts numbers (0-9) plus allowed number related special characters (minus sign, decimal point, thousands separator).

NoSpecialChar ... Accepts upper and lower case letters (a-z, A-Z), numbers (0-9), and space.

PhoneChar ... Accepts numbers (0-9) plus (), -, and space.

 

_MinusSign Boolean

When true, accepts a minus sign (the minus sign character set in the OS region settings) in the first character position of the textbox. In effect only when the _Keystrokes property is set to NumbersOnly.

 

_DecimalPoint Boolean

When true, accepts one decimal point (the decimal point character set in the OS region settings). In effect only when the _Keystrokes property is set to NumbersOnly.

 

_ThousandsSeparator Boolean

When true, accepts any number of thousands separators (the digit grouping character set in the OS region settings). In effect only when the _Keystrokes property is set to NumbersOnly.
 

..."
 
I needed something just like this the other day. I needed a simple textbox limited to numbers only and that highlighted on focus. Sure it’s easy enough to code that, but I’m pretty lazy and hate rewriting the same code over and over (even to snipping over and over... ). An extender is a good solution for this problem.


I ended up using a third party control that I already owned (Infragistics UltraNumericEditor). But I also hate using a 10 pound sledge to hammer in drywall nails (I’m just never happy am I?).


This is a VB 7.1 project, but looks easily upgradable to VB8...