I just purchased a custom system to host a new Windows Home Server build for while I’m deployed to Afghanistan. This should provide a great service sharing files (movies, pictures, music) and backing up everyone’s laptops.
I have had Windows Home Server running at home for a couple years and it’s been phenomenal. I can’t say enough about it. The server provides easy access to the kids DVDs that have long since been scratched and ruined. It keeps all the kids pictures safe in a central repository. It backs up the other computers and laptops in the house. I’ve had to use WHS to restore two different systems, and each time it went smoothly. I have even recovered from a failed hard drive on the server. All of this was fairly painless. The integration with the Xbox 360 is great. The Xbox WHS UI isn’t as pretty as the UI for Windows Media Center, but the functionality blows WMC out of the water (9 times out of 10, I just want to throw the controller across the room while browsing for a movie in WMC). All of this functionality will translate well to a small group of soldiers in country.
What makes me nervous is that WHS is built on Windows Server 2003 which is more than a bit dated. A quick Google search to check the status of WHS v2 (Vail) indicates that Microsoft has decided to turn off the drive extender functionality and HP has decided to abandon their Media Smart systems. This seems to indicate WHS is all but dead. Drive extender was the foundation that made WHS such a viable solution for the home user. It’s a shame to see Microsoft get things so right the first time out, only to throw the project away for version 2 (Boondock Saints 2 of software?). Personally I’m still holding on to hope that Microsoft will come to their senses and release a viable WHS upgrade. If not, hopefully I can get another couple years out of my existing systems and wait for another vendor to fill the void.
I have had Windows Home Server (WHS) installed for about four months now. This is an amazing piece of software. I can’t believe it hasn’t caught on with more people. WHS handles all of my home networking needs. It does daily backups of both my laptop and my wife’s laptop. It stores all of our pictures and music on redundant storage. It provides a free dynamic DNS service, so I can connect to my home network and establish a remote desktop connection to my home machine from anywhere. It doubles as a media server accessible from both the XBox 360 and any computer in the house. I understand each of these features may be available independently via open source options, but WHS makes everything simple, it works and it was inexpensive $90. I admit the UI is ‘clunky’ and overall feels pieced together, but that’s because it is. WHS is a stripped down version of Windows 2003 Server with a few WHS services running. For more info see: http://www.microsoft.com/windows/products/winfamily/windowshomeserver/default.mspx
For my configuration, I converted my old desktop to a WHS machine. I have an old Dell with an AMD Dual Core something or other processor. I added two new 1.5TB Seagate drives at ($129 a piece), added an extra couple GB of RAM (memory usage seldomly rises above 1GB) and I upgraded to a gigabit NIC and Router. Then I threw the machine in the basement without a monitor or keyboard or anything and never have to touch it. I can’t express enough how easy and powerful this thing is. It solves numerous problems and does so for a reasonable cost. All together it cost about $500 to get the whole system up and running.
I use the following WHS Add-Ins:
FirePlay – http://www.mediasmartserver.net/forums/viewtopic.php?f=3&t=3999
Disk Management – http://www.tentaclesoftware.com/WHSDiskManagement/
Advanced Admin Console – http://mswhs.com/2008/01/22/add-in-advanced-admin-console/
FileZilla FTP Server – http://computingondemand.com/?p=961
To those that remember the underground world of BBSes, there is a podcast available at HanselMinutes.com where Scott Hanselman interviews the founders of Mustang Software and explores the joys of personal computing in the early 90’s. If you remember those days, you should definately check it out.
Just last month, while juggling for my son, my wife asked me how or why I learned to juggle. I explained that there was quite a bit of waiting around associated with running a BBS. She had never heard of a BBS, nor had I ever disclosed the uber-geekdom associated my days as a SysOp within the Massachusetts BBS community. She did not understand the excitement associated with waiting over 30 minutes for the latest version of Duke Nukem to download. Or the fun associated with watching someone browsing around your site, then popping in to say hello. At the height of it’s popularity, my BBS received over 100 calls a day. OK, maybe I’m the only one impressed, but it wasn’t bad for a highschool kid with a 14,400 modem installed on his fancy 486DX33 (that’s right… DX… math co-processor in full effect… ).
I did a quick search for ANSI art to find an image for this post and was amazed to find a downloadable copy of TheDraw…
SysOp DD BBS
Oh, thanks Kevin for that special copy of Win95…
Acresso has answered my question regarding 64 bit custom actions. The bottom line is that they are not allowed.
You are correct that you cannot call a 64 bit dll from a managed custom action, however this is not dependent on setup.exe or any prerequisites.
Windows Installer does not have a managed custom action type so InstallShield wraps the managed dll in a native 32 bit dll. The issue is then that the 32 bit wrapper can’t call into a 64 bit dll and so there is no way to do this. So the technical restriction is that our 32 bit wrapper is unable to call into 64 bit dlls.
It is possible to launch a 64 bit executable from a custom action and do whatever is required from the 64 bit exe.
Additionally, you can create a class that derives from the System.Installer class and set the “.Net Installer” property within Install Shield, but it is more difficult to control when the code is called.
Recent StackOverflow Question:
We would like to hook calls to LoadLibrary in order to download assemblies that are not found. We have a handler for ResolveAssembly that handles the managed assemblies, but we also need to handle unmanaged assemblies.
We have attempted to hook LoadLibrary calls by re-writing the imports table via techniques specified in “Programming Applications for Microsoft Windows”, but when we call WriteProcessMemory() we get a permission denied error (998). (Yes, we’re running with elevated privs)
Has anyone succeeded in re-writing the imports table while the CLR is loaded? Can anyone point me in the right direction?
Update: We resolved the permission denied issue, but now when we iterate the Imports Table of a mixed assembly (managed + unmanaged), the only entry we find is mscoree.dll. Does anyone know how to find the native imports? (we’re working in C++/CLI).
We resolved the issue via a call to VirtualProtect() prior to calling WriteProcessMemory() and then call it again afterwards to restore the protection levels. This temporarily removes the read-only protection for the memory where the IAT resides. This works well for us and resolves the issue for when LoadLibrary() is called.
Here is a list of some of the more obscure tools I install on my dev machine. Some of these are huge time-savers that I have come to depend heavily on.
I don’t know how other can use any of the other notepad replacements. Notepad++ blows them all away.
Invaluable tool when working with any .Net assemblies.
I also select the replace task manager option of process explorer.
You have to use it for a while to really respect how much you quickly become dependant on it’s functionality. The color coded scroll bar rocks.
Ease of use is great. Explorer plugins are great.
I use this tool to replace Synergy’s diff merge tool. The util has made Synergy source control bearable.
When you need to create a couple UML Sequence diagrams, don’t bother with EA or Visio. Trace Modeler is 100% the way to go. At just over a hundred bucks it is a bit pricey, but worth the money if you have to create more than a couple diagrams.