Звучит так, как будто ваша сборка доступна для кэша сборок, и она решит вашу проблему - и это проблема, для которой GAC был разработан, но это излишне.
Просто отправьте ту же версию этих DLL вобе директории.
Манифесты используются для того, чтобы ваша программа использовала определенную версию DLL (или набор DLL).
Лучший известный пример - когда ваше приложение пытаетсязагрузить comctl32.dll
.
Эта DLL обычно находится в вашей system32 :
Directory of C:\Windows\System32
11/20/2010 09:25 ᴀᴍ 633,856 comctl32.dll
1 File(s) 633,856 bytes
И если вы не сделали ничего особенного, вы получите эту версию DLL(версия 5.82).Но для программ характерно, что не хочет эту версию comctl32
.Большинство программ, написанных для Windows XP или новее, хотят быть уверены, что они загружают версию 6 из comctl32
.Они делают это, указывая запись в манифесте сборки своего исполняемого файла, говоря, что они хотят конкретную версию библиотеки общих элементов управления:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
Теперь, если приложение пытается загрузить comctl32.dll
,даже если в пути поиска уже есть версия (или даже в той же папке), Windows вместо выдаст Версия 6 из comctl32.dll
.Эта dll спрятана в специальном месте, где люди не должны трогать:
Directory of C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc
07/13/2009 09:03 ᴩᴍ 1,680,896 comctl32.dll
1 File(s) 1,680,896 bytes
Бонус болтовни : причина WinSxS
настолько велика, потому что она содержиткаждая версия каждого DLL, что кто-то может хотеть.Я насчитал 3619 собраний.Причина, по которой вы не хотите удалять WinSxS, состоит в том, что программе нужна одна из этих библиотек.
Похоже, что вам нужно создать манифест сборки для Qt
(которыйопределяет серию связанных dll), а затем регистрирует эту сборку в параллельной системе Windows.
К сожалению, кажется, что для размещения в WinSxS сборкафайлы должны иметь цифровую подпись.Он также выглядит так, как будто только с помощью установщика Windows можно устанавливать сборки, устанавливая их в кэш Side-by-Side:
. Вы должны устанавливать общие параллельные сборки как компонентыпакет установщика Windows.Это может быть тот же установочный пакет, который используется для установки или обновления вашего приложения.Если общая сборка поставляется в составе нескольких приложений, необходимо предоставить модуль слияния, который можно включить в установочные пакеты этих приложений, и создать каталог для файлов в сборке.
Установщик Windows версии 2.0 илипозже потребуется установить сборки.Для получения дополнительной информации см. Windows Installer SDK и разделы под Установка сборок Win32 .
См. Также