Я думаю, мне нужно создать файл манифеста для MSCOMCTL.ocx, чтобы использовать его в моем приложении VB6 (reg free) Мне также нужно будет обновить / создать файл .res. Затем мне нужно будет использовать ManifestCreatorII. Прошло несколько лет (2017 г.), я забыл шаги и не могу найти свои старые заметки. Я помню, как работать с NSI для создания установочного пакета. Без этого я не могу заставить свои приложения работать на новой Win 10 P C.
My Development P C - это виртуальный P C с запущенным Windows XP (32 бит) Service Pack 3 . Я программирую с помощью Visual Basi c 6.0 (SP6).
Работа над этими экспериментами научила меня, что мне НЕ действительно нужны файлы манифеста для каждого из используемых файлов зависимостей .ocx для компонентов в моих программах VB6.
Мне действительно нужен только один файл манифеста для всей прикладной программы, который используется для создания файла ресурсов для проекта.
Моя проблема впервые было указано, когда я установил пакет NSIS и запустил его программу VB6 на новом Win10 (64) P C:
Run-time error 339: Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
Я получил это сообщение об ошибке, когда попытался открыть одну из недавно добавленных форм.
Уникальной особенностью этой формы является использование элементов управления диалогом с вкладками (TabStrip), которые ссылаются на MSCOMCTL.ocx.
re: https://www.processlibrary.com/en/directory/files/mscomctl/19764/
mscomctl.ocx is an ActiveX Control module that contains common controls used by Windows, such as ImageCombo, ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, ToolBar, and TreeView controls.
* 102 7 * Я создал крошечную программу zMSCOMCTL, которая имеет одну форму, содержащую только два элемента управления (TabStrip и ProgressBar), оба из одного компонента MSCOMCTL.ocx.
Я использовал плагиат из кода VB6 и NSIS моих похожих крошечных программ (например: zRichTx, zThreeD, zCOMDLG).
Когда я устанавливаю и пытаюсь запустить zMSCOMCTL на моем новом Win10 (64) P C, я получаю то же сообщение об ошибке: Ошибка выполнения 339: Компонент 'MSCOMCTL.OCX' или одна из его зависимостей неправильно зарегистрирована: файл отсутствует или недействителен
Я загрузил копию MSCOMCTL.ocx версии 6.1.98.46 из https://www.ocxme.com
Эти инструкции основаны на: https://originaldll.com/file/mscomctl.ocx/16903.html
- Сделал резервную копию:
C:\WINDOWS\system32\MSCOMCTL.*
- В окне командной строки:
regsvr32 /u MSCOMCTL.ocx
- Удалено
C:\WINDOWS\system32\MSCOMCTL.*
- Скопировано новое
MSCOMCTL.ocx
в C:\WINDOWS\system32
- ПЕРЕЗАГРУЗИТЬ
- В окне командной строки:
regsvr32 MSCOMCTL.ocx
ПЕРВЫЙ пробный метод:
A. создать MSCOMCTL.ocx.manifest:
- В окне командной строки: regsvr42 MSCOMCTL.ocx
- Я использовал NotePad ++ для изменения
.sxs.
изменено на .ocx.
type="win32"
изменено на processorArchitecture="x86" type="win32"
<file name="MSCOMCTL.ocx">
изменено на <file name="Dependencies\MSCOMCTL.ocx">
Чтобы повысить шансы ManifestCreatorv2. 0.3 принимает файл MSCOMCTL.ocx.manifest вместо того, чтобы требовать копию ClipBoard. (Без символов или пробелов)
- Сначала отредактируйте MSCOMCTL.ocx.manifest с помощью Notepad ++
- Выберите все, скопируйте, вставьте в Блокнот и сохраните в MSCOMCTL.ocx.manifest
Б. Создать файл zMSCOMCTL.exe.manifest
- Открыть ManifestCreatorv2.0.3:
- Манифест> Создать из файла проекта (vbp) zMSCOMCTL.vbp
- Манифест> Добавить / Манифест слияния - из файла MSCOMCTL.ocx.manifest
- Манифест> Экспорт манифеста - Файл целевого диска
- сохранить в zMSCOMCTL.exe.manifest (Заменить)
re: http://www.vbforums.com/showthread.php?845909-VB6-Manifest-Creator-II
C. Создайте zMSCOMCTL.res
Завершите работу проекта zMSCOMCTL VB6 или удалите zMSCOMCTL.res из проекта
Открыть ManifestCreatorv2.0.3:
Манифест> Создать из файла проекта (vbp) zMSCOMCTL.vbp
Манифест> Добавить / объединить манифест - из файла MSCOMCTL.ocx.manifest
Манифест> Манифест экспорта
- [_] Манифест отступа
- [_] Не использовать пространства имен с префиксом
- [ x] Не экспортировать пустые / пустые атрибуты
- Целевой файл ресурсов - сохранить в zMSCOMCTL.res (Заменить)
Д. Создайте новый zMSCOMCTL.exe
- Откройте проект zMSCOMCTL VB6 или добавьте zMSCOMCTL.res обратно в проект
- В проекте VB6 zMSCOMCTL начните с полной компиляции: выполняется ОК
- В проекте zMSCOMCTL VB6, Файл -> Создать новый исполняемый файл:
Запуск нового исполняемого файла: zMSCOMCTL.exe Результат:
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
Это конец пробного метода FIRST (не удалось)
Re: VB6 RegFreeCom SideBySide SxS Manifest Test для TABCTL32.ocx
Успешный процесс:
Я скачал UMMM из https://github.com/wqweto/UMMM
[ Find_file ] [_ Clone_or_download_v] Click on the Green Button
Клонировать с HTTPS Используйте Git или оформляйте заказ с SVN, используя веб-URL.
[https://github.com/wqweto/UMMM.git]
[ Open_in_Desktop ] [ Download_ZIP ] Then Click on Download_ZIP Button
- Я расширил загруженный файл UMMM-master.zip.
- Получившаяся папка. \ Sr c содержала файлы: mdUmmm.bas и Ummm.vbp.
- I скопировал их в свою собственную папку проекта UMMM-master
- Я быстро взглянул на mdUmmm.bas и Ummm.vbp.
- Ummm.vbp ссылается на
SysWOW64
. - В Блокноте поменял на
System32
. Development platform is WinXP(32)
- Я открыл Ummm.vbp с помощью VB6
- Я сделал File - Make для создания UMMM.exe
- Я скопировал UMMM.exe в C: \ Программные файлы \ Support Tools \
in %path%
Это ссылки, которые я нашел для UMMM Unattended Make My Manifest
:
- https://github.com/wqweto/UMMM
- Создание файлов манифеста для регистрации - бесплатно COM
- Без регистрации COM: VB6 Исполняемая ссылка на VB6 DLL
- https://github.com/wqweto/UMMM/blob/master/Sample.ini
- http://www.vbforums.com/showthread.php?840333-SXS-and-UMMM-with-inter-thread-marshalling
- https://github.com/wqweto/UMMM/issues/9
- https://github.com/wqweto/UMMM/issues/16
Первая ссылка - где У меня есть подсказки для создания файла .ini. Шестая ссылка помогла мне создать bat-файл, который вроде работает!
zMSCOMCTLUMMM.ini
Этот .ini-файл, следующий за строкой Identity, содержит список файлов зависимостей. Они перечислены в файле .vbp (например: Object = {831FDD16-0C5 C -11D2-A9F C -0000F8754DA1} # 2.2 # 0; mscomctl.ocx).
Вы также можете найти они перечислены в VB6 Menu> Project> Components ...
В этой форме Components вы можете выбрать [x] Selected Items Only, чтобы упростить просмотр списка.
Выделение каждого компонента в список будет отображаться ниже: (например: Местоположение C: \ ... \ MSCOMCTL.OCX)
В файле .ini я указываю путь к файлу зависимости, потому что он не хранится в локальная папка проекта.
Identity zMSCOMCTL.exe zMSCOMCTL.exe "MSCOMCTL Test program 1.0"
File C:\WINDOWS\system32\mscomctl.ocx
zMSCOMCTLUMMM.bat
UMMM.exe zMSCOMCTLUMMM.ini .\manifest\zMSCOMCTL.exe.manifest
pause done?
Есть ли способ указать имя файла = в UMMM (автоматическое создание моего манифеста) при создании Program.exe.manifest?
Я отредактировал полученный zMSCOMCTL.exe.manifest с помощью Блокнота и изменил:
From: <file name="..\..\..\..\WINDOWS\system32\MSCOMCTL.ocx">
To: <file name="Dependencies\MSCOMCTL.ocx">
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity name="zMSCOMCTL" processorArchitecture="X86" type="win32" version="1.1.0.24" />
<description>MSCOMCTL Test program 1.0</description>
<file name="Dependencies\MSCOMCTL.ocx">
<typelib tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" version="2.2" flags="control,hasdiskimage" helpdir="" />
<comClass clsid="{1EFB6596-857C-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.TabStrip.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
<progid>MSComctlLib.TabStrip</progid>
</comClass>
<comClass clsid="{24B224E0-9545-4A2F-ABD5-86AA8A849385}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{9A948063-66C3-4F63-AB46-582EDAA35047}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{66833FE6-8583-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.Toolbar.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,simpleframe,setclientsitefirst">
<progid>MSComctlLib.Toolbar</progid>
</comClass>
<comClass clsid="{7DC6F291-BF55-4E50-B619-EF672D9DCC58}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,simpleframe,setclientsitefirst" />
<comClass clsid="{8B2ADD10-33B7-4506-9569-0A1E1DBBEBAE}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,simpleframe,setclientsitefirst" />
<comClass clsid="{8E3867A3-8586-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.SBarCtrl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,setclientsitefirst">
<progid>MSComctlLib.SBarCtrl</progid>
</comClass>
<comClass clsid="{627C8B79-918A-4C5C-9E19-20F66BF30B86}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,setclientsitefirst" />
<comClass clsid="{585AA280-ED8B-46B2-93AE-132ECFA1DAFC}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,setclientsitefirst" />
<comClass clsid="{35053A22-8589-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.ProgCtrl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,setclientsitefirst">
<progid>MSComctlLib.ProgCtrl</progid>
</comClass>
<comClass clsid="{A0E7BF67-8D30-4620-8825-7111714C7CAB}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,actslikelabel,alignable,setclientsitefirst" />
<comClass clsid="{C74190B6-8589-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.TreeCtrl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
<progid>MSComctlLib.TreeCtrl</progid>
</comClass>
<comClass clsid="{9181DC5F-E07D-418A-ACA6-8EEA1ECB8E9E}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{95F0B3BE-E8AC-4995-9DCA-419849E06410}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{DD2DBE12-F9F8-4E32-B087-DAD1DCEF0783}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{BDD1F04B-858B-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.ListViewCtrl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
<progid>MSComctlLib.ListViewCtrl</progid>
</comClass>
<comClass clsid="{996BF5E0-8044-4650-ADEB-0B013914E99C}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{979127D3-7D01-4FDE-AF65-A698091468AF}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{CCDB0DF2-FD1A-4856-80BC-32929D8359B7}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{2C247F23-8591-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.ImageListCtrl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,invisibleatruntime,alignable,setclientsitefirst">
<progid>MSComctlLib.ImageListCtrl</progid>
</comClass>
<comClass clsid="{F91CAF91-225B-43A7-BB9E-472F991FC402}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,invisibleatruntime,alignable,setclientsitefirst" />
<comClass clsid="{556C2772-F1AD-4DE1-8456-BD6E8F66113B}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,invisibleatruntime,alignable,setclientsitefirst" />
<comClass clsid="{F08DF954-8592-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.Slider.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
<progid>MSComctlLib.Slider</progid>
</comClass>
<comClass clsid="{0B314611-2C19-4AB4-8513-A6EEA569D3C4}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
<comClass clsid="{DD9DA666-8594-11D1-B16A-00C0F0283628}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" progid="MSComctlLib.ImageComboCtl.2" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst">
<progid>MSComctlLib.ImageComboCtl</progid>
</comClass>
<comClass clsid="{87DACC48-F1C5-4AF3-84BA-A2A72C2AB959}" tlbid="{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" />
</file>
</assembly>
Затем используйте ManifestCreatorv2.0.3 для создания файла zMSCOMCTL.res
Манифест> Создать из файла проекта (vbp) zMSCOMCTL.vbp
Манифест> Добавить / объединить манифест - Из файла [например:. \ Manifest \ MSCOMCTL.exe.manifest]
Манифест> Манифест экспорта>
[_] Манифест отступа
- [_] Не использовать пространства имен с префиксом
- [x] Не экспортировать пустые / пустые атрибуты
- Файл целевого ресурса - сохранить в zMSCOMCTL.res (Заменить)
Откройте проект zMSCOMCTL VB6 или добавьте zMSCOMCTL.res обратно в проект
Скомпилируйте, скомпилируйте и протестируйте программу.
- В рамках проекта VB6 zMSCOMCTL, начните с полной компиляцией: выполняется ОК
- В проекте VB6 zMSCOMCTL, Файл -> Создать новый исполняемый файл:
- Сохранить проект
Running zMSCOMCTL.exe from with in its Project folder:
`[Run-Error 7 out of memory?]`
Создайте и используйте файл NSIS для создания установочного файла SxS для тестирования на любых целевых компьютерах.
Файл NSIS создает исполняемую программу для:
- Determine if the target operating system is [AtLeastWinVista] and if it is [RunningX64].
- Request a selection from the available Harddrives / Partitions for installation.
- Based on this criteria, it creates an InstallDirectory and an InstallDirectory\Dependencies subdirectory.
- Copies the Program.exe into the InstallDirectory.
- Copies the Dependency files into the InstallDirectory\Dependencies subdirectory.
- Also based on this criteria it creates a Public read/write data directory.
- Creates desktop shortcut
- Creates start-menu items
- Creates an Uninstall mechanism
Я настроил файл NSIS для установки только файлов зависимостей, перечисленных в файле .vbp, файле UMMM.ini и в итоговом файле .exe.manifest.
Установлено на WinXP (32) работает нормально Установил на Win7 (64) работает нормально Установлен на Win10 (64) работает нормально