关于数字签名和.inf(100分)

  • 主题发起人 主题发起人 dudajiang
  • 开始时间 开始时间
用visual interdev 一切都搞定了。
 
zhucp:
你说的是什么意思?能详细说说吗?给我发mail亦可(riverdu@sina.com)
 
dudajiang:
我在研究这个问题
 
请你参考我的代码

CAitAnlyse.inf内容:
[Add.Code]
CAiTAnalyse.ocx=CAiTAnalyse.ocx
CAiTAnalyse.lic=CAiTAnalyse.lic

[CAiTAnalyse.ocx]
file=./CAiTAnalyse.cab
clsid={039E74E6-4426-452E-BA1B-AD252B591721}
RegisterServer=yes
FileVersion=1,0,0,2

[CAiTAnalyse.lic]
file=./CAiTAnalyse.cab

CAitAnalyse.lic里只有一句
{5C3E0C7B-5DAF-47C8-BB2E-5D40EAE7CCB3}

HTML里的内容:
<OBJECT
classid="clsid:039E74E6-4426-452E-BA1B-AD252B591721"
id="aa"
codebase="./CAiTAnalyse.cab#version=1,0,0,2"
width=106
height=74
align=center
hspace=0
vspace=0
>
</OBJECT>

我的CAB是签过名的,第一次在客户运行能显示签名信息
 
看这个
經由.inf檔做進階設定
  藉由修改.inf檔, 你可以設定你要的安裝程序. 經過修改的.inf檔可以被包含在一個用手建立的.cab檔案(使用.ddf專案檔)中. 或者可以被Object標籤中的Codebase屬性直接引用.
  
注意:一般我們並不使用.inf檔, 因為它無法讓我們為它加上數位簽名. 如果我們要使用.inf檔, 那麼控制項的.ocx檔必須要有數位簽名.
  
對一個.inf檔的典型修正包括:
˙加入一個認可協議
˙加入一個讀我檔案
˙加入附加的文件
  
注意:身為一個ActiveX控制項的發展者, 你可以修正你的網路下載元件. 但是你應該知道這樣做的話, 如果你的修正引發了不正確的結果, 你將會替你自己和你公司招致潛在的責任. 某些改變指的是你能保證, 確定或承擔, 你所做的變更是正確且可信的. 在認可協議中加入" 如…. "或者" 適當 "的條款企圖躲避掉應負的責任在很多裁決中都被判定違規.
  
這裡有一個.inf的例子:
;INF file for ControlDemo.ocx
;DestDir can be 10 for Windows directory, 11 for Windows/System(32) directory, or left blank for the Occache directory.

[version]
signature=$CHICAGO$

[Add.Code]
CONTROLDEMO.OCX=CONTROLDEMO.OCX
MSVBVM50.DLL=MSVBVM50.DLL

[CONTROLDEMO.OCX]
file-win32-x86=thiscab
RegisterServer=yes
clsid={F651BF93-239B-11D0-8908-00A0C90395F4}
DestDir=
FileVersion=1,0,0,1

[MSVBVM50.DLL]
hook=MSVBVM50.cab_Installer
FileVersion=5,0,34,21
[MSVBVM50.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb5/MSVBVM50.cab
InfFile=MSVBVMB5.inf


 
iamcaca:
你的Inf我尝试了一下,可惜我没有调通.
BlackDragon:
>那麼控制項的.ocx檔必須要有數位簽名.
是否指[Add Code]的第一个ocx文件?
>[version]
>signature=$CHICAGO$
什么意思?可以给出资料的来源的URL吗?
 
这是台湾的msn上讲的,地址在家里。公司只能上169[:(!]
 
现在正在找工作,这个问题我都快放弃了:(
to iamcaca:
你的
------------
[CAiTAnalyse.ocx]
file=./CAiTAnalyse.cab
clsid={039E74E6-4426-452E-BA1B-AD252B591721}
RegisterServer=yes
FileVersion=1,0,0,2

[CAiTAnalyse.lic]
file=./CAiTAnalyse.cab
----------------
中为什么[CAiTAnalyse.ocx]和[CAiTAnalyse.lic]里面file都指向同一个文件?

to BlackDragon:
我觉得你的例子和我的需求很象,只是你的例子中的[MSVBVM50.DLL]换成我的
[midas.dll]就可以了,但是现在我没法试验我的[midas.dll]。我就是想向你明确
一下:是不是按照你的写法我的cab在数字签名后就算是用.inf也可以出现我所需要的
那个控件提示框?
谢谢大家了!


 
sorry.我的HTML里的内容写错了,应该为:
<OBJECT
classid="clsid:039E74E6-4426-452E-BA1B-AD252B591721"
id="aa"
codebase="./CAiTAnalyse.inf#version=1,0,0,2"
width=106
height=74
align=center
hspace=0
vspace=0
>
</OBJECT>

另file同时指向一个文件的原因是ocx和许可证书均在这个文件里
 
干吗带许可证书?那个lic挺讨厌的。
 
我原来的一个ActiveForm OCX经过签名后发布浏览一切正常,但是如果发布时选择了
发布额外需要的文件,如Midas.dll,这样网页中就会引用Inf文件,
这样即使我把所有要发布的文件都签名了,客户端也不能下载这个ActiveForm了,
这个Inf文件是不是有错误?
 
苯方法一个:
把要带的文件编译成资源。
这样就成一个单独的OCX,
然后在OCX运行的时候,
创建你需要的文件。
 
接着讨论,问题多多。
 
其实只要把Midas.dll也打在cab里,在把cab签名,那不就可以了吗?为什么一定要用.inf文件呢?
 
该死的INF,为什么一但有了附加文件,就不行了?????
高手们快来啊!!
 
谁有制作数字签名的CAB包的工具?
在哪里可以下载?
 
从这里下载:
http://www.8421.org/download.php?id=156&amp;down=1
 
我成功了!我用了很笨而且觉得没什么道理的方法
1。发布时不把midas.dll一起打包,而是只发布一个,不用她的.cab文件,而是用ocx文件
2。用cabarc将midas.dll做成midas.cab
3。手工写一个inf,加上midas
4。用cabarc将ocx和inf做成xxx.cab
5。分别吧xxx.cab和midas.cab签名(注意:签midas.cab时,选自定义)
6。成功
是不是没有道理?签midas.cab时,不选自定义,就不行!
 
我也遇到了这个问题,楼上的能不能把你的cabarc程序发给我一个,谢谢

colderboy@hotmail.com
 

Similar threads

I
回复
0
查看
656
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部