D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

有个VB做的WebService客户端程序,一直是需要安装SOAP Toolkit 3.0后才能使用,所以客户需要安装两个安装包,一个是我这个程序,一个是SOAP Toolkit 3.0。

昨天终于下决心抽空研究怎么合并打包程序了,经历是曲折的:

1. 从微软官方下载到了soapsdk的再分发包:STK3Redist.EXE

2. 解压后发现里面是几个. msm文件(isapi3_files.msm,soap3_core.msm,winhttp51.msm)

3. 上网搜索 .msm文件的使用方法,结果有人说用installshield可以打开,打开后,看到里面有mssoap30.dll等文件, 可是打开后无法导出,只能合并到别的msm文件或msi文件中,试着合并到自己程序的msi文件中,提示出错,合并失败,并无错误描述。

4. 于是开始研究提取msm文件中的文件,将msm文件导出到一个空的msi文件中,然后试了两个提取msi文件的软件(Universal Extractor和MSI文件提取器0.66)均提取失败。

5. 无意中搜到《打包SOAP 》这篇文章,其中的内容起了决定性作用:

1.将msm文件拷贝到InstallShield安装目录下的Objects文件夹下,例如:Macrovision\IS11.5\Objects 

2.在InstallShield下,将相应的msm合并模块从上面的InstallShield objects/Redistributables选中(SOAP SDK Files ,SOAP SDK ISAPI Files和WinHTTP QFE Installer ) 

原来msm文件是这样用的呀

6. 选中打包以后,安装测试,晕,依然报错:

WSDLReader: Loading of the WSDL file failed HRESULT=0x80040154: Class not registered.(没有注册类别)


7. google上搜索这个错误,遇到了这篇文章

KBAlertz.com: Error message when you try to access a Web service that is hosted on IIS: HRESULT=0x80040154

其中讲到的一种情况与我这种情况一致:
You include the redistributable files from the Microsoft SOAP Toolkit 3.0 in the client program installation package.
三种解决办法中我用的是:
Method 3: Install Microsoft XML Core Services 4.0 Service Pack 2


8.于是我在installshield中选入了msxml4.0(本来也找好了MSXML4.0 SP2的包,结果用msxml4.0就解决了,每用上)

9.打包测试

10.成功!


总结:
首先,对于使用了soapToolkit3.0的客户端程序,必须注册需要的dll文件。
有人说只需要注册几个dll文件(MSSOAP30.DLL,MSSOAPR3.DLL ,WISC30.dll  ),没有精力去追究是不是这样了,而且这几个文件也不再同一个msm文件中,所以我把三个msm文件都加进去。
也有人说手动注册,但是对于安装程序来说,手动不再考虑之列。

然后,msm文件可以合并到别的msm文件或msi文件中。
虽然我没有试验成功,但msm文件的初衷大概就是为了模块化分发的,主要用于微软的msi安装包的制作。

其次,installshiel是可以将msm文件为我所用的
启发来自《打包SOAP》这篇文章

最后,对安装程序的测试一定要在空的操作系统上测试,不然,受到开发环境的影响,有些问题很难发现。
制作期间也遇到了一些别的问题,大多数是需要的文件没有打在包里,就像vb里面的richtext.ocx和msflxgrd.ocx,有些文件是可以在installshield中的Redistributables选取的,在Redistributables里没有提供的就得自己把文件加进去。




Feedback

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-13 15:42 by kesaly
您好,由于我从来就没有接触过.MSM文件和installshield,所以就不知道怎样才能把.MAM文件用到自己的安装程序中去,我该怎么做呢

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-13 16:10 by 巴西木
你为什么会用到msm文件呢?是要做安装包吗?如果是的话,那你至少要把installshield装上吧,然后先了解一下installshield怎么用。我博客里有几篇关于is的文章,可能还不够,重要的是要动手操作。

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-13 16:30 by kesaly
简单的说在我们的软件里面要用到windowsxp tablet pc edition development kit中的东西,所以在我的安装包里面就必须安装tablet pc ,根据tablet pc 的安装文件描述知道,他只有几个.MSM文件,要安装tablet pc 就得用那几个.MSM文件,所有我就不知道该怎么办了~!

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-13 16:31 by kesaly
那个installshield看起来好繁琐哦,我用的打包工具是inno setup,不知道该怎么集成进去,查了好几天了 ,头都大了~!

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-13 17:55 by 巴西木
噢,inno setup这个工具还真没用过,is也不像你想得那么复杂,我们只用其中一小部分的功能,也不用脚本编程实现。

你要还用inno setup的话,查查帮助,一般都会有些启发的。

祝好运:)

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-16 10:34 by kesaly
如果可以的话,您能不能给我一个用installshiedl来集成.MSM文件的例子呢?我只把.MSM文件用installshield集成后安装得上就可以了,然后我再处理inno setup的问题

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-16 11:25 by 巴西木
如果你已经安装了is,那么:

1.将msm文件拷贝到InstallShield安装目录下的Objects文件夹下,例如:Macrovision\IS11.5\Objects

3.创建自己的安装包(可使用向导,比较简单)

2.在InstallShield界面的InstallShield objects/Redistributables下将会看到msn文件所对应的模块名,选中相应模块就可以把这个模块打包到自己的安装包中

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 08:57 by kesaly
刚ghost了下系统,好不容易才找到您这个网址 我已经安了 我试下哈 先谢谢 ~!

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 09:05 by kesaly
有个问题,我看到object目录下现在已经有了三个文件了,那这三个文件我是把它删除了呢?还是放在那不动呢?这三个文件的名字分别是fnc11_full.msm、fnc11_lite.msm、fnc61.msm

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 10:00 by 巴西木
我这里没有你提到的这几个文件,如果你用不到,那暂时不要动吧。 是objects目录吧,不是object

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 10:27 by kesaly
哦 对的 是objects ,还有 我没有找到您说的“在InstallShield界面的InstallShield objects/Redistributables”在哪呢?

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 10:29 by kesaly
能给我个您的联系方式吗?MSN、QQ什么都可以~!谢谢

# re: VB之WebService客户端打包经历(初次理解msm)  回复  更多评论   

2009-02-17 10:43 by 巴西木
msn:nobrake@hotmail.com

# re: VB之WebService客户端打包经历(初次理解msm)[未登录]  回复  更多评论   

2009-06-25 11:03 by 小猪
谢谢,终于把它打包好了
只有注册用户登录后才能发表评论。