2013-07-16 38 views
1

我有一個需要一些的dll文件和OCX-文件的應用程序,在VB6程序安裝在Windows 7如何創建包括mysql-ODBC,所有DLL和OCX文件的Windows便攜式應用程序?

我已經有一個安裝有innosetup,包括所有需要的文件,也催生安裝mysql Connector-ODBC的Windows( 86,64位)

如果我只是把所有文件到一個文件夾中安裝doesent工作,我得到的錯誤

組件MSDATGRD.OCX或它的一個依賴未正確註冊:一個文件丟失或無效

我試過msdatgrd.ocx portableapp搜索,但不知道

有一個簡單的解決辦法,使這個應用程序無需安裝運行?

您可以將我想要打包的文件下載到PortableApp here中。


我試着用依賴性打開的Setup.exe學步車,但不幸的是我沒有足夠的專業知識來使用該工具。 here a screenshot

雖然依賴學步車的輸出似乎是騙人的,在這裏看到:

Win 7, 64 bit, dll problems

反正:我下載的9個文件herepacked them,現在它顯示更加其他文件缺少:pastebin.com/8LawEbuk 7此doesent似乎導致任何地方導致依賴者步行者太舊


我在尋找的東西非常簡單的創建,無論最終文件大小,因爲我不是一個Windows程序員

+0

這是另一個[沒有myodbc的示例](http://www31.zippyshare.com/v/21311637/file.html)它也抱怨MSDATGRD.OCX,它只是創建一個沒有mysql的網格:http:// i.stack.imgur.com/Hdp4v.png – rubo77

回答

1

下面的錯誤:

元器件MSDATGRD。OCX或其某個依賴關係不正確 已註冊:文件丟失或無效

可能是因爲您還沒有註冊ocx組件。如果您手動分發此組件,則還需要將其註冊到用戶的機器中。爲此,請發出以下命令:

regsvr32 msdatgrd.ocx從命令行(請注意,您需要擁有管理員權限)。

如果您不想將應用程序安裝在典型的應用程序目錄中(即:C:\ Program Files),您可以使用%APPDATA%或%LOCALAPPDATA%變量來獲取Romaming(如果在網絡上)和Local用戶的應用程序目錄,分別。你也可以使用Windows API來做到這一點。例如:

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

除了對.ocx(這是實現特定的接口DLL),你要注意,如果你使用從您的SETUP.EXE裏面寫了一個DLL等方法,那麼你必須導出它們。

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

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

c++ exporting and using dll function

編輯:下面的好文章

我發現這一點:

Use OCX without registering it

請注意,Windows XP將於2014年4月停止使用!另外請注意,這樣做是骯髒的黑客應該避免。我不知道在Windows 7和Windows 8會發生什麼(說實話,你不應該花時間與招數,但改變便攜式DLL組件)

而且我聽說http://boxedapp.com/ 我從來沒有用過,但它的價值看看。

+0

但是一個便攜式應用程序必須運行沒有管理員權限 – rubo77

+0

它可能是,這就是爲什麼我解釋了獲取本地用戶的路徑。但要註冊ocx,您必須至少擁有超級用戶權限。 – jyz

+0

是不是有一種方法可以將它全部包含在一個目錄中而無需註冊?如果這些功能已經在全系統文件中可用,這並不重要。我認爲這就是PortableApp應該運行的。 – rubo77

0

可以使用Visual Basic Package and Deployment Wizard(PDW)來創建你的程序的Standard Setup Package,然後檢查依賴列表中出現的內容。該軟件包需要安裝Admin權限。

要使用沒有管理員權限的OCX,您需要檢查是否可以通過無註冊COM激活ActiveX。您可以通過Windows SDK中的mt.exe生成清單,但Make My Manifest更好地支持VB6項目。您不僅需要隔離網格控件,還需要隔離控件所需的任何COM對象。

MSDATGRD.OCX需要這些文件:msstdfmt.dll和Msbind.dll。

+0

但這兩個文件已經在我的示例zip中包含 – rubo77

+0

我添加了另一個示例,它只是創建一個沒有mysql的網格:http://i.stack.imgur.com/Hdp4v .png – rubo77

相關問題