MichaelDev
Tuesday, June 29, 2004
  ASP.Net Fusion Log Viewer
A neat little thing our ASP.Net expert showed me...

The Fusion Log Viewer utility. Fusion is the technology name that is used for downloading .Net components to the GAC (your Windows\assembly\download directory).

If you want to see more of what's going on with download components on ASP.Net pages, this can be a helpful too. Just run fuslogvw.exe (use the VS.Net command prompt so it's already on your path).

By default, the Log Failures checkbox is not checked. It's a good thing to check if you're trying to find out what's going on with downloaded components. Double-click on the application entry and it opens a detailed log of what's going on.
 
Thursday, June 24, 2004
  InstallShield Eval
I tried out the InstallShield X demo. I found the UI even less intuitive than Wise Installer for Windows. I don't really like either of them. Don't think I've met anyone who does. It's really amazing how complicated you can make simple concepts like installing software.

The amusing (and annoying) thing about InstallShield X is that it installs an automatic update service on your computer. This thing prompts you to periodically check for updates to your installed software. When I decided I didn't want to deal with InstallShield X anymore, I removed the software. And guess what? This annoying automatic update service stays behind, periodically reminding you to check for updates to the software you no longer have installed.

At least I can tell this auto update thing to no longer check for updates. Even then, it periodically puts an icon in the system tray to bother me about updating my non-existent software.

Now the real funny part that shows their true level of incompetence: I still have my eval support login, so I raised an issue about this auto-update thing that wasn't removed. It turns out the people at InstallShield don't even know how to remove it!!! It's on someone's list of things to figure out how to do. And these people specialize in installing and removing software. Do you want to trust your installation to people who can't figure it out themselves?

An then, because my support issue was over 5 days old and they hadn't figured out how to do it, they just decided to mark my support indicent as "resolved" and close it. I guess that means some support guy is getting his bonus now for promptly resolving customer issues. Once they've closed an issue, you can't even re-open it. You can just make a new issue and refer to the old one. A sure-fire way to warp your customer service metrics in your favor, isn't it?
 
Thursday, June 17, 2004
  Microsoft Security Summit
The Microsoft Security Summit recently came through Anaheim.

Brian Valentine was the keynote speaker. It was strange to see him in a coat and tie. I'm more used to seeing him in a hockey jersey.

The developer track was pretty good. Michele Leroux Bustamante presented the developer track. It was nice to have someone present who actually does what she's presenting. Sometimes the presenters at these Microsoft things are just people who got the speaker kit.
 
Friday, June 11, 2004
  Win32 resources from .Net / Resource-Only DLL
Unfortunately, the VS.Net languages such as C# don't let you create conventional resources like you could from the C/C++ compiler. So, if you want a resource-only DLL, you have to go to C++ and build it there.

Microsoft has an article on the proper steps to go through to do this in the VS.Net IDE:

Creating a Resource-Only DLL


Of course, if you want conventional Win32 resources in an assemly, you can do it by invoking RC and taking the result and doing some other command line somewhere. I haven't needed to do that yet. I'm content with a resource-only DLL right now.

This is useful for things like installers and other OS features that don't know how to find resources in assemblies. In our case, it's convenient for getting a certain icon in the add/remove programs control panel and some other things.
 
  Microsoft CSP and Keys with Multiple Users
We use the AssemlyKeyNameAttribute attribute in our AssemblyInfo files to set our private key. It looks like this:

[assembly: AssemblyKeyNameAttribute("MyKey")]

To use it, you store the key (in this case "MyKey") in the CSP on your machine. When your assembly gets built, it uses the key from the CSP.

We have automated builds (using Visual Build Professional from Kinook -- awesome tool!!!). As part of the process, it installs the key into the CSP. So, if you've ever done a "sn -i" operation and seen a message like this, keep reading:

Failed to install key pair -- Object already exists.

This message was very puzzling for a while. We knew the key didn't exist, but we were receiving this message. So, we tried deleting the key with "sn -d".

You get the following:

Failed to delete container 'MyKey' -- Unable to format error message 8013141C

How's that for a vague message?

So we know it failed. Finally, we figured out that the key did exist on the machine, but it was put into the CSP by a different user. We had to log on as that user and delete the key. and then we could add it under a different user.

Incidentally, you get the same message if you try to delete a key that doesn't exist:

Failed to delete container 'MyKey' -- Unable to format error message 8013141C

So that's not necessarily a clue that the key exists under a different user. It just tells you something went wrong and not why.

Microsoft really needs to iron this out. Ideally, each user on a machine should be able to save the same key name to the CSP separate from any other user and it shouldn't conflict. If that's not the case, then they CSP should be for the machine, not each user. What we have is a really strange hybrid that can cause headaches.
 
Various notes on software development. Currently using C# and .Net. May also include comments on the overall software development process, etc.

Name:
Location: Orange County, California, United States
ARCHIVES
June 2004 / July 2004 / August 2004 / September 2004 / October 2004 / November 2004 / December 2004 / January 2005 / February 2005 / March 2005 / April 2005 / May 2005 / September 2005 / October 2005 / November 2005 / January 2006 / February 2006 / April 2006 / May 2006 / June 2006 / March 2007 /


Powered by Blogger