Как создать переносное приложение Windows, включая mysql-ODBC, все DLL- и OCX файлы?

У меня есть приложение, запрограммированное в vb6, для которого требуются некоторые DLL файлы и ocx файлы, установленные в Windows 7.

У меня уже есть установщик, созданный с innosetup, который включает все необходимые файлы, а также устанавливает mysql Connector-ODBC для Windows (x86, 64-разрядный)

Если я просто поместил все файлы в одну папку, то установка будет работать, я получаю сообщение об ошибке

Компонент MSDATGRD.OCX или одна из его зависимостей, некорректно зарегистрированная: файл отсутствует или недействителен

Я попробовал поиск msdatgrd.ocx portableapp, но не Idea

Есть ли простой способ обхода этого приложения без установки?

Вы можете загрузить файлы, которые я хочу упаковать в PortableApp здесь.


Я попытался открыть Setup.exe с помощью хоста зависимостей, но, к сожалению, у меня недостаточно опыта для использования этого инструмента. здесь скриншот

Хотя выход ходящего зависимостей кажется обманчивым, см. здесь:

Win 7, 64 бит, проблемы с dll

В любом случае: я загрузил эти 9 файлов здесь и упаковал их, теперь он показывает еще больше других отсутствующих файлов: pastebin.com/8LawEbuk 7 этот doesent, кажется, ведет в любом случае, потому что ходок зависимостей слишком стар.


Я ищу что-то действительно просто создать, независимо от размера файла в конце, так как я не программист на Windows

Ответ 1

Ошибка ниже:

Компонент MSDATGRD.OCX или одна из его зависимостей неверно зарегистрировано: файл отсутствует или недействителен

вероятно, потому, что вы не зарегистрировали компонент ocx. Если вы вручную распространяете этот компонент, вам также необходимо зарегистрировать его на машине пользователя. Для этого вы выполните следующую команду:

regsvr32 msdatgrd.ocx из командной строки (обратите внимание, что вам нужно иметь права администратора).

Если вы не хотите устанавливать приложение в типичном каталоге приложения (например, C:\Program Files), вы можете использовать переменные% APPDATA% или% LOCALAPPDATA% для получения Romaming (если в сети) и локального пользователя каталог приложений, соответственно. Вы также можете использовать Windows API для этого. Например:

if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPathName)))
{
    PathAppend(szPathNam, _L"\\YourCompany\\YourProduct\\") );
}

Помимо .ocx(который является Dll, который реализует определенные интерфейсы), вы должны заметить, что если вы используете другие методы из DLL, которые вы написали внутри вашего файла setup.exe, вам необходимо экспортировать их. Хорошие статьи ниже:

http://msdn.microsoft.com/en-us/library/z4zxe9k8.aspx

http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL

С++ экспорт и использование DLL-функции

EDIT:

Я нашел это:

Использовать OCX без его регистрации

Помните, что Windows XP будет прекращена в апреле 2014 года! Также обратите внимание, что это грязный хак и его следует избегать. Я не знаю, что происходит в Windows 7 и Windows 8 (честно говоря, вам не следует тратить время на трюки, но переход на переносимый компонент dll)

Также я слышал о http://boxedapp.com/ Я никогда не использовал, но это стоит посмотреть.

Ответ 2

Вы можете использовать Visual Basic Package and Deployment Wizard (PDW), чтобы создать Стандартный пакет настроек для вашей программы, а затем проверьте, что отображается в списке зависимостей. Пакет потребует прав администратора для установки.

Чтобы использовать OCX без прав администратора, вам нужно проверить, можно ли активировать ActiveX через COM-доступ без регистрации. Вы можете сгенерировать манифест через mt.exe из Windows SDK, но Make My Manifest лучше поддерживает проект VB6. Вам нужно изолировать не только управление сеткой, но и любой COM-объект, требуемый элементом управления.

Для MSDATGRD.OCX требуются следующие файлы: msstdfmt.dll и Msbind.dll.