Click Once Deployment in Windows 8 and the Smart Screen filter

We have several applications that we install with ClickOnce to keep versions up to date. Unfortunately with Windows 8 we've been getting horrible SmartScreen notices that this code might be unsafe!!

I was pulling my hair out trying to find a way to convince the system that the code was safe, after all we built it and signed the deployment. Then I found the solution on robindotnet.wordpress.com:

Signing the application executable pre-publish (recommended solution)

The pre-publish command is executed after building the application and right before publishing it. There is no box for this under Build Events, so you have to add it to the project yourself. (Be sure to clear out the post-build event command line before doing this.)

To add a pre-publish command right-click on the project in Visual Studio and select “Unload Project”. Now right-click on the project again and select “Edit yourprojectname.csproj”. It will open the csproj file in Visual Studio so you can edit it. Go down to the bottom and add a new section before the </Project> line. You’re going to put your pre-publish command line in this section. 

<Target Name=”BeforePublish”>
</Target>
So what do you put in this section? You are going to specify a command to execute, so you have to use Exec Command, and put the command to execute in double quotes. Since you can’t put double-quotes inside of double-quotes (at least, not if you want it to work), you need to change the double-quotes in your command to &quot; instead. So my build command from above now looks like this:
<Exec Command=""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\signtool.exe" sign /f "$(ProjectDir)TestWin8CO_TemporaryKey.pfx" /p nightbird /v "$(ProjectDir)obj\x86\$(ConfigurationName)\$(TargetFileName)"" />
After making this match your parameters, save the csproj file and then close it. Then right-click on the project and reload it:
 
Now if you build your project, you won’t see anything about signing the application executable in the output window. It will only do it if you publish, and there won’t be logging letting you know it signed it. How do you know if it worked? Go to the folder you published to, and look in the Application Files folder. Locate the application executable in the folder for the new version. Right-click on it, choose properties. Look for a tab called “Digital Signatures”. If it’s not found, it’s not signed. If you do see it, go to that tab; it will show the signature list and the signer of the certificate. You can double-click on the signer and then view the signing certificate.

The Full Article with pictures is available at http://robindotnet.wordpress.com/2013/02/24/windows-8-and-clickonce-the-definitive-answer-2/ 

Bless the internet.

Feature Estimation

After several months of Scrum we've come to a consensus on our user story point estimation which is well summed up in this article about PivotalTracker:

Point Estimate Guidelines

  • 1 or 2 points for typos or minor visual changes.
  • 3 or 5 points for concrete features.
  • 8 points for epics or "this is too big and needs to be broken down more".

 

Here's a link to the article: http://www.agileweboperations.com/how-to-estimate-user-stories-when-using-pivotaltracker 

Windows 8 and the Cisco AnyConnect VPN Client

So Ben and I have both had this problem, the VPN client wouldn't launch no matter what with Windows 8. Turns out all you have to do is edit one registry key and it'll work again!

You might see error messages like “The VPN Client driver has encountered an error.” or “Cannot initiate VPN.

...

Browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vpnva

Double-click on the DisplayName key, and remove the INF information from the display name so that it appears as Cisco AnyConnect VPN Virtual Miniport Adapter for Windows x64. (or the 32-bit / x86 equivalent)

Thanks to "Tom on Tech"!

via http://www.tomontech.com/2012/03/pro-tip-cisco-anyconnect-vpn-client-and-windows-8-consumer-preview/

Cleaning Up Team Foundation when a Developer Leaves the Team

Occasionally someone leaves a development team. It could be a long time team member or a contract developer who has completed their project. Aside from all the physical office changes you have to make (cleaning the desk, reformatting a workstation) there is the virtual office housekeeping. We recently had an offsite developer finish a project we’d contracted them for and I was left with the task of cleaning them out of the branch we’d set up for them in Team Foundation. The only problem was, there were locks and pending changes… from a remote machine I can’t access.

Command Line Tools to the Rescue!

Luckily Team Foundation has a few command line tools to fix these problems. Here are the three steps needed to clean up after a departed dev.

More...

Building a Scrum Board

I just returned from my ScrumMaster certification training in Kansas City and have been refining our work process accordingly. We decided to build a physical, index card based scrum board in the office.

Picture of our scrum board
 

More information on how it's organized and built after the jump.

More...

Fleshing out Product Backlog Items

One of the biggest challenges we have faced with Scrum is creating meaningful user stories for our backlog items. I recently came across an interesting article on "storycrafting".

Before

Need to get electronic patient signatures

After

Headline:

Get electronic patient signatures.

Story:

As a Nurse, I want to capture electronic patient signatures and related bar codes for better record keeping and billing.

Conditions of Satisfaction:

  • Legal and financial disclosures are displayed.
  • Bar codes captured (Patient ID, Items) and patient signature.
  • Transaction is recorded.

via http://agile.techwell.com/articles/weekly/storycrafting-idea-action-face-unknowns

More...

Image Resizing, Cropping, and Caching Server Side

Responsive web design puts a new wrinkle into the standard design constraint of using images in your web designs. You need similar images resized to different resolutions, sometimes cropped in slightly different ways and you need as many versions as you have supported break points in your design. On this blog and on www.hendrix.edu we are currently using 4 specific targets (large desktop, notebook/small desktop, tablet, and mobile). This means we multiply the needed file by up to 4 times for each image. Needless to say, this becomes difficult, unwieldly, and time consuming, especially if you are relying on non-power users to supply those images. We are currently using a tool we found on the internet to resolve that issue, the imageresizer asp.net module (http://imageresizing.net/). In their own words:

Work less, do more

Resize, crop, rotate, watermark, and modify images without ever leaving your browser or editor, with a simple API.

  • Query string API (all languages)
    image.jpg?width=300
  • Managed API (.NET and COM languages)
    ImageBuilder.Current.Build(source,destination,parameters)

More...

Responsive Web Design on EktronTV

Josh Daugherty and I were recently featured on a recent EktronTV Office Hours discussing Responsive Web Design duiscussing our work on the new Hendrix Website.

 Thanks to Bill Cava (Chief Evangelist at Ektron),  James Stout (Technical Marketing Manager Ektron), Chris Osterhout (Director of Enterprise Solutions at WSOL), and Joe Mayberry (web developer at WSOL) for having us!

The "box-sizing: border-box" means less complex math for grid designs!

One of the least enjoyable aspects of current website design is the need to add and subtract padding (or is it margin and also the border) from the width of elements in CSS design layouts. This post from Paul Irish goes into the border-box model and it's support in browsers.

One of my least favorite parts about layout with CSS is the relationship of width and padding. You're busy defining widths to match your grid or general column proportions, then down the line you start to add in text, which necessitates defining padding for those boxes. And 'lo and behold, you now are subtracting pixels from your original width so the box doesn't expand.

Ugh. If I say the width is 200px, gosh darn it, it's gonna be a 200px wide box even if I have 20px of padding. So as you know, this is NOT how the box model has worked for the past ten years. Wikipedia has a great history of this box model. Jeff Kaufman also dove into the history

Anyway, I have a recommendation for your CSS going forward:

*{ 
-moz-box-sizing: border-box; 
-webkit-box-sizing: border-box; 
box-sizing: border-box;
}

This gives you the box model you want. Applies it to all elements. Turns out many browsers already use border-box for a lot of form elements (which is why inputs and textareas look diff at width:100%;) But applying this to all elements is safe and wise.

http://paulirish.com/2012/box-sizing-border-box-ftw/ (via David Hinson)

Web Hosting and Windows Azure

I ended up putting this site on my College provided web space since I have easier access to it if I do something wrong, but my first deployment was into the cloud! I found an article about hosting a BlogEngine.NET blog in the new Windows Azure Web Sites preview and it was remarkably easy and straight forward.

Month List

Page List