Registered on : 10-10-2016
REMARK: this feature request was officially registered years ago. So to inform about the existence of such a feature request, I place it here.
**************************************************
In earlier versions of Windows it was possible to have external manifests for TD applications by placing the manifest file along with the application. The external manifests had priority, so windows would use custom ones when deployed with no problem.
With newer versions of Windows (at least in Win7 and up) the priority has been changed in Windows. It now will use the internal one and ignore external manifests.
The only way to get the old way working is to change/add a registry key in Windows to prefer external manifests over the internal ones:
Code: Select all
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
"PreferExternalManifest"=dword:00000001
But this is a system wide setting and it may be prohibited by companies to change this setting.
This means that TD developers are cut off from a basic Windows feature to use manifests.
In other dev environments (eg Visual Studio) you are able to edit/add your own manifests and embed it as internal.
Why we would need this?
* Setup side-by-side installations
* Adding PATH settings to the executable without using batchfiles and/or changing PATH system variable
* COM components usage without registering them on the system
Specially the last feature is very powerful and I would like to emphasize this feature as major advantage:
You can xcopy any COM based components on a system, have multiple versions of COM interfaces to different dll versions on a system without registering them. TD is able to use the COM components as if it was registered and on the fly change the version to use.
An example:
Add this line to the exe manifest:
Code: Select all
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" processorArchitecture="x86" name="Philips.SpeechMike" version="3.5.350.05" />
</dependentAssembly>
</dependency>
(stating to use speechmike COM component specific version)
and then (excerpt) the manifest for the COM component:
Code: Select all
<assemblyIdentity
processorArchitecture="x86"
version="3.5.350.05"
type="win32"
name="Philips.SpeechMike">
</assemblyIdentity>
<file name="SpMikeCtrl.dll" hashalg="SHA1">
<comClass
clsid="{4A0948DA-2C0A-4995-9679-4C609B2E3F01}"
tlbid="{90D8C17A-63DC-489C-9742-0EAA2F48D236}"
description="BarcodeKeyboardSettings Class">
</comClass>
<typelib
tlbid="{90D8C17A-63DC-489C-9742-0EAA2F48D236}"
resourceid="1"
version="1.0"
helpdir=""
flags="HASDISKIMAGE">
</typelib>
</file>
<comInterfaceExternalProxyStub
name="IBarcodeKeyboardSettings"
iid="{35EA0B74-5BC4-11DC-8314-0800200C9A66}"
tlbid="{90D8C17A-63DC-489C-9742-0EAA2F48D236}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}">
Here you can specify all the interfaces to the dll with the needed GUIDs and classnames.
A TD application can then use this dll as COM without registering.
I ask for a feature to be able to view/edit/add your custom manifest so it will be compiled as resource in the exe/dll.
In build settings I imagine a way to view the current manifest, manually edit it or import an existing from a file.
Then when TD builds the exe it will use that resource.