ActiveForm的版本更新问题(100分)

  • 主题发起人 主题发起人 liounzhou
  • 开始时间 开始时间
L

liounzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
我将一个已经开发完成的Delphi程序修改为ActiveForm的方式。在建立ActiveX控件时已经
选择了版本控制,打包的时候也勾了发布版本信息的选择,可是除了我自己本机外,其他的
机子还是不能够下载最新的、已经更改过的ActiveForm,这是什么原因???
 
补充:因为我使用了三层的结构,所以打包添加了Midas.dll文件,所以HTML是指向一个
同名的inf文件的。从此在客户端就无法与服务器端同步更新了(之前直接打包成cab文
件,是可以的)。
 
1.打包路径有问题
2。找本书看一下,你的手头也应该有
要设置一栏project options->directories/canditionals->auto那一项和相关相
 
客户端IE设置允许未签名的activx.
 
应该是打包路径的问题.
 
kmyan:
能不能说得详细一点?
 
1、分两个站点分发,第一站点专门用来第一次运行的客户运行,下载运行环境;
2、第二个站点就是只下载更新的部分。
 
是这样的:directory and URL options是指package分发的目标目录以及目前存在
于服务器中的目录
targer DIR:指Activeform要分发的目的地位置
targer url:ocx存在于服务器中的目录
targer dir和targer url指向的是一个地址(iis设置的),只不过targer dir是指实际路经,
targer url是指虚拟路经
html dir:储存这个html的首页档案的位置
 
kmyan:
原来你说的是这样。那我一早就知道了,也已经这么设置过了,但是没有用啊。
gzfrank:
你说的分两个站点,具体有什么区别吗?
 
你再详细看一下,我估计你的路径是有问题,
因为我以前也是这种情况,不是才怪了:)
 
我仔细试过了,不是路径的问题。因为我之前做的两层结构的ActiveForm都可以正常下载
新的版本。更改为三层结构后,加入了一个额外的文件Midas.dll,在HTML上变成了引入
inf文件(原来是在HTML上直接引入cab包),因此导致了无法自动下载新的版本。去掉那
个Midas.dll文件,直接引用cab包就又能够进行版本更新了。不过,为什么会这样子呢?
那Delphi做的ActiveForm不是不能够加入额外的文件了吗?
 
这是由于在你调用这个ACTIVEX的主面中如,*.html中的
<object>
..............
</object>
把其中的version改成新生成的ACTIVEX的版号就行,注意classID也要一样。
如:
<OBJECT classid=clsid:37A01465-2D92-11D4-9DFA-52544CA00E8E id=DownApp1
codebase="http://egsserver:80/DownAppProj.ocx#version=2,0,15,71"
style="HEIGHT: 35px
LEFT: 0px
TOP: -1px
WIDTH: 98px"><PARAM NAME="Visible" VALUE="0"><PARAM NAME="AutoScroll" VALUE="0"><PARAM NAME="AutoSize" VALUE="-1"><PARAM NAME="AxBorderStyle" VALUE="0"><PARAM NAME="Caption" VALUE="DownApp"><PARAM NAME="Color" VALUE="2147483668"><PARAM NAME="Font" VALUE="MS Sans Serif"><PARAM NAME="KeyPreview" VALUE="0"><PARAM NAME="PixelsPerInch" VALUE="96"><PARAM NAME="PrintScale" VALUE="1"><PARAM NAME="Scaled" VALUE="-1"><PARAM NAME="DropTarget" VALUE="0"><PARAM NAME="HelpFile" VALUE=""><PARAM NAME="DoubleBuffered" VALUE="0"><PARAM NAME="Enabled" VALUE="-1"><PARAM NAME="Cursor" VALUE="0"><PARAM NAME="WebServerIP" VALUE="172.16.150.111"><PARAM NAME="DataServerIP" VALUE="172.16.150.111"><PARAM NAME="ProgVersion" VALUE="1.04">
 </OBJECT>
 
热水:
首先,你没有使用CAB包,这样的话,客户端下载会比较慢;其次,你说的版本号的问题,在不加入额外的文件时,Delphi
会自动在HTML页面上生成版本号的。只有加入额外的文件后,HTML上CODEBASE指向的是一个INF文件,而版本号就写在INF文件
里面。因此,并不是因为我缺少版本号而无法自动更新。
 
没有人还知道更多的东西吗?
 
to :liounzhou :
如何使用CAB包,并把midas.dll 和 ocx 一起打进去?
 
这个问题我刚刚解决,和你得一样,把另外的文件打入包中就要出错。
在delphi 里发布,然后:
修改html 文件和inf文件。
1.修改html 文件,将inf 后面加上ocx的版本号(如果你在这里加的版本号大于ocx的版本号,那么每次刷新都会下载inf文件)
classid="clsid:C7EA99B6-B75A-4063-BF03-42D2333E1416"
codebase="./ActiveFormProj1.inf#version=1,1,37,9"
2.修改inf文件,加上destdir=10 (10 是windows 目录,11是系统目录)
下载了inf后,会根据inf里的版本号判断那些文件更新过了(如果没有版本的文件,例如下面的jpg文件,你也可以加上一个版本号,强迫更新)
[ActiveFormProj1.ocx]
file=./ActiveFormProj1.cab
clsid={C7EA99B6-B75A-4063-BF03-42D2333E1416}
RegisterServer=yes
FileVersion=1,0,37,9
destdir=10

[cwsw.exe]
file=./cwsw.cab
FileVersion=1,0,0,6
destdir=10

[listrpt.dll]
file=./listrpt.cab
destdir=10

[background.jpg]
file=./ActiveFormProj1.cab
destdir=10

一切ok啦,不管你是将所有附加文件都打入一个CAB包,还是一个文件一个包,还是不用CAB包,都没有问题。
手工调整html 的inf版本号,只要大于机器中的ocx 版本,就会自动下载,然后根据inf文件内容,更新附加文件
一切都在控制之中了。
这个问题也困扰我很长时间了,把大富翁论坛以前相关的贴字都翻遍了,没有找到解决办法,今天再试终于让我给解决了。
试成功了可要给分哦。
 
to Yong:
打包之前,选择Deploy additional files,然后就可以在第三个分页选择文件进行打包了。
 
我已经试过了,MyCool 是对的!
 
后退
顶部