如何发布我的程序(含API),在别人的机器上能顺利执行?

时间:2021-09-08 11:48:09
现在做好了一个VB的串口通讯程序,要发布出去。
因为使用了MSComm以及系统API,比如kernel32里的GetPrivateProfileString,
setupapi.dll里的SetupDiGetClassDevs,总的有二十多个API,
我使用VB的打包程序打包,安装文件的体积有6M多,不想这样。
我想直接把EXE文件、INI文件等单独拷贝出来,然后再发布出去,要怎么办?
MSComm可以使用Regedit的方式注册,但API怎么办,要怎么拷贝到别人机器上?
我的是XP系统,别人的机器可能是Win2K、也可能是XP?

10 个解决方案

#1


打包是最好的,不会遗漏文件,API函数是包含在DLL里面的吧,也是要注册的

#2


是不是我把用到的API拷贝出来,然后注册到别人机器上?
比如把setupapi.dll拷贝出来,写个批处理文件,拷贝并注册?

#3


学习……  

#4


制作安装程序以后,安装完毕自动注册完

#5


可以是可以,但是要是别人电脑上没有这些dll就麻烦了

#6


windows提供的系统API不需要安装相应的DLL,而setupapi.dll应该不是系统提供的,需要安装。这些,安装程序应该可以识别。
虽然都封装在DLL里,传统的API不需要注册,需要注册的是ActiveX DLL。具体点就是,要在引用里添加的需要注册,在模块里声明就可用的不需要注册。
你的安装程序太大,可能就是引用项太多造成的。
NT和XP的有些API有区别,有些不能通用,但有很多可以通用。具体可以查看相应API的帮助。com口通信类我想可以通用。

#7


感谢各位的帮助,目前我是把DLL放在程序目录下,另外写了一个批处理文件,
[code=BatchFile]
copy MSCOMM32.OCX C:\WINDOWS\system32
copy hid.dll C:\WINDOWS\system32
copy setupapi.dll C:\WINDOWS\system32
regsvr32 /s MSCOMM32.OCX
regsvr32 /s hid.dll
regsvr32 /s setupapi.dll
[/code]
不知道这样行不行

#8


mark

#9


mark

#10


已经在一台Win2K和WinXP下实验过,WinXP下可以正确执行,但Win2K则不行,观察后发现,Win2K的setupapi.dll与我的setupapi.dll大小不同,即使用我的DLL拷贝并注册,程序也报错,说找不到setupapi.dll。
暂时结贴吧,看来XP下的程序也只能在XP下运行了。

#1


打包是最好的,不会遗漏文件,API函数是包含在DLL里面的吧,也是要注册的

#2


是不是我把用到的API拷贝出来,然后注册到别人机器上?
比如把setupapi.dll拷贝出来,写个批处理文件,拷贝并注册?

#3


学习……  

#4


制作安装程序以后,安装完毕自动注册完

#5


可以是可以,但是要是别人电脑上没有这些dll就麻烦了

#6


windows提供的系统API不需要安装相应的DLL,而setupapi.dll应该不是系统提供的,需要安装。这些,安装程序应该可以识别。
虽然都封装在DLL里,传统的API不需要注册,需要注册的是ActiveX DLL。具体点就是,要在引用里添加的需要注册,在模块里声明就可用的不需要注册。
你的安装程序太大,可能就是引用项太多造成的。
NT和XP的有些API有区别,有些不能通用,但有很多可以通用。具体可以查看相应API的帮助。com口通信类我想可以通用。

#7


感谢各位的帮助,目前我是把DLL放在程序目录下,另外写了一个批处理文件,
[code=BatchFile]
copy MSCOMM32.OCX C:\WINDOWS\system32
copy hid.dll C:\WINDOWS\system32
copy setupapi.dll C:\WINDOWS\system32
regsvr32 /s MSCOMM32.OCX
regsvr32 /s hid.dll
regsvr32 /s setupapi.dll
[/code]
不知道这样行不行

#8


mark

#9


mark

#10


已经在一台Win2K和WinXP下实验过,WinXP下可以正确执行,但Win2K则不行,观察后发现,Win2K的setupapi.dll与我的setupapi.dll大小不同,即使用我的DLL拷贝并注册,程序也报错,说找不到setupapi.dll。
暂时结贴吧,看来XP下的程序也只能在XP下运行了。