My windows co-workers were asking me if I could modify my non-windows binary files such that when their “Properties” are examined under Windows, they could see a “Version” tab like that which would show for a Visual Studio compiled exe.
Specifically, I have some gzipped binary files and was wondering if I could modify them to satisfy this demand. If there’s a better way, that would be fine, too.
Is there a way I could make my binaries appear to be exe files?
I tried simply appending the VS_VERSION_INFO block from notepad.exe to the end of one of my binaries in the hope that Windows scans for the block, but it didn’t work.
I tried editing the other information regarding Author, Subject, Revision, etc. That doesn’t modify the file, it just creates another data fork(what’s the windows term?) for the file in NTFS.
It is not supported by windows, since each file type has their own file format. But that doesn’t mean you can’t accomplish it. The resources stored inside dlls and exes are part of the file format.
Display to the user:
If you wanted this information to be displayed to the user, this would probably be best accomplished with using a property page shell extension. You would create a similar looking page, but it wouldn’t be using the exact same page. There is a really good multi part tutorial on shell extensions, including property pages starting with that link.
Where to actually store the resource:
Instead of appending a block to the file, you could store the resource into a separate alternate data stream on the same file. This would leave the original file stream non corrupted on disk and not cause its primary file size to change.
Alternate data streams allow more than one data stream to be associated with a filename. Each stream is identified by a colon
:at the end of the filename and an identifier.You can create them for example by doing:
Getting the normal Win32 APIs working:
If you wanted the normal API to work, you’d have to intercept the Win32 APIs: LoadLibraryEx, FindResource, LoadResource and LockResource. This is probably not worth the trouble though since you are already creating your own property page.