clockOctober 28, 2009 18:34 by authorPaul Alexander commentComments (0)

Maintenance release. Some customers reported receiving Invalid Program exceptions with then encrypted version of the licensing runtime. The fix was discovered some time ago, but applied only to the 4.x release. The fix has been back ported and incorporated into the final 3.x release.

See the complete change log.

To download the update select Help | Check for Updates in the DeployLX Manager, or visit the My Account section of the website to download authorized installers.



clockOctober 13, 2009 11:34 by authorPaul Alexander commentComments (0)

Subscribe to the update feed to be notified when we release an update.

This is the final release of the 3.x line and includes a few minor usability enhancements and back-ports of fixes made to the new 4.x beta.

  • Support for Windows 7.
  • Fixed module load exception in Windows Server 2008 x64 with Kill Debuggers enabled.
  • Improved the Test License feature in DeployLX Manager.
  • DeveloperMode will reset any secure storage tamper detection and will report tampering in the error report.
  • See the complete change log and new xbugz.com site for more details.

 

To download the update select Help | Check for Updates in the DeployLX Manager, or visit the My Account section of the website to download authorized installers.



clockSeptember 24, 2009 21:46 by authorPaul Alexander commentComments (0)

I recently acquired a MacBook Pro for my mobile development and played around in Mac OSX before getting Boot Camp and Windows 7 installed. While exploring I kept reading text files in the Monaco font. I’ve known about it for a while and never liked it as a programming font. But I did like it for the console and SSH apps. But surprise when installing Windows, Monaco was not a available as a console font – even after downloading it an configuring it for Notepad. So a little digging with Process Monitor I found the registry key needed to make it available:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]
"000"="Monaco"

Mmm….much nicer console.



clockSeptember 7, 2009 13:37 by authorPaul Alexander commentComments (0)

When an application crashes on Windows 7 where Visual Studio is installed, you’re normally prompted to Debug the application (after waiting for it to check for issues :( ). However some applications always get caught by Dr. Watson and never give you a chance to debug. There are a few articles out there on disabling Dr. Watson for XP, but Vista and Windows 7 are different enough that the other techniques often fail to help.More...



clockAugust 22, 2009 22:41 by authorPaul Alexander commentComments (0)

On occassion one might have the need to browse .NET’s Global Assembly Cache – to manually update a file during development or to remove an assembly left behind by an installer. Normally you’d use gacutil to add or remove assemblies from the GAC during testing and development. However if the assembly was added by an installer, gacutil refuses to remove it. More...



clockAugust 10, 2009 15:18 by authorPaul Alexander commentComments (0)

In the previous post, I showed how to use the Session.Get<T> syntax against an arbitrary property on the entity. The primary limitation with that method is that it only works for constant values. The following will work with constants, local variables, return values from methods, etc. More...



clockAugust 7, 2009 01:09 by authorPaul Alexander commentComments (0)

While many of my entity classes use surrogate primary keys, they also have natural keys (Product SKU for example). When I want one of those entities it’s more natural to use the natural key, naturally. Normally that requires a CreateCriteria call, I’d rather just call Get<T> like I can with the surrogate keys. So I created an extension method that lets me do this:

var product = session.Get<Product>( x => x.Sku == “DLX” );
More...


clockJuly 19, 2009 06:37 by authorPaul Alexander commentComments (0)

Ever wished you could test the output of your MailMessages without actually sending the message anywhere? You could use the DeliveryMethod of the SmtpClient with SpecifiedPickupDirectory and try and round trip the email through the file system. This is troublesome as you have to remember to delete all the files in the output directory before calling Send, then scan the folder for the new file. It also prevents you from any sort of multi-threaded testing. More...



clockJune 3, 2009 15:31 by authorPaul Alexander commentComments (0)

From time to time I'll want to perform some operation on a subset of properties of a Type. However reflecting over types can be costly exercise. Since Types don't change at runtime the natural solution is to parse them once and cache the results. For small sets this works well. However  with hundreds of types, the performance starts to degrade. I've also noticed that the typeof operator is rather slow when compared to intrinsic is and as operators.

So to create a fast Type keyed dictionary I use the C# compiler and runtime JIT to do it for me. This solution is extremely fast and due to it's static nature, thread safe. But, it's also lazy-init because generic types aren't created until they're actually used at runtime.

public static class TypeCache<T>
{
	public static readonly Type Type = typeof( T );
	public static readonly PropertyInfo[] Properties = 
			typeof( T ).GetProperties();
}

I can now get all the properties of a type like this:

foreach( var p in TypeCache<Entity>.Properties )
{
	Console.WriteLine( p.Name );
}

Since this is all actually part of the runtime types, the JIT and compiler can take advantage of any available optimizations. Analysis of the actual code JITted at at runtime shows the lookup TypeCache<Entity> actually indexes into a runtime table, whereas the typeof operator does an actual lookup by signature.

Limitations

  • It's ready only. It's a great lazily initialized structure but the factors that make it thread safe.
  • It's never garbage collected. Type information is always retained in the AppDomain so any statics created this way will always remain live.


clockMay 20, 2009 19:55 by authorPaul Alexander commentComments (0)

When upgrading from Windows Vista to the new Windows 7 RC some customers have complained of license access errors when running their protected software. DeployLX Licensing contains anti-hacking features to detect when a hacker tries to delete the secure storage.  When detected any license that uses secure storage (such as those containing a Time limit or Activation limit) will fail – informing the user that they need to run the application as an administrator at least once. However running as an administrator does not resolve the issue because the secure storage is still missing.More...



Products : News : Store : Search : Contact : About XHEO : Site Map
Copyright © 2002-2009 XHEO INC. All Rights Reserved.

XHEO.com: Copy Protection. Encryption. Deployment.
Copyright © 2002-2009 XHEO INC. All Rights Reserved.