您的位置:首页 > 产品设计 > UI/UE

转帖:InstallShield---如何使用脚本生成GUID

2011-01-18 10:06 645 查看
朋友Fishout写了一篇关于在InstallShield中,如何用脚本生成GUID,写的非常好,在征得朋友Fishout的同意后特转到这里与大家分享,原文链接:http://blog.csdn.net/fishout/archive/2010/09/01/5855822.aspx
版权归原作者所有,未经同意严禁转载,大家也可以访问Fishout的Blog

下面是全文:
作者:Fishout
GUID---Globally Unique Identifier(全球唯一标识符)是通过特定算法产生并具有唯一性的一个二进制长度为128位的数字,在安装过程中,有时需要生成GUID供安装过程调用,以下代码的出处是国外哪个网站已不记得了,只是自己用过不错,贴出来供大家参考。

1 // 函数定义描述
2 prototype OLE32.CoCreateGuid(POINTER);
3 prototype OLE32.StringFromGUID2(POINTER, BYREF STRING, LONG);
4 prototype CreateStringGUID (BYREF STRING);
5
6 typedef GUID
7 begin
8 LONG Data1;
9 SHORT Data2;
10 SHORT Data3;
11 STRING Date4[8];
12 end;
13 //---------------------------------------------------------------------------
14 // 函数: CreateStringGUID---通过调用系统OLE32.DLL产生GUID字符串
15 //---------------------------------------------------------------------------
16 function CreateStringGUID(strGuid)
17
18 NUMBER nResult, cbMax, i;
19 GUID gGuid;
20 GUID POINTER pGuid;
21 STRING lpszGuid;
22
23 begin
24
25 // 初始化变量及函数指针
26 pGuid = &gGuid;
27 gGuid.Data1 = 0;
28 gGuid.Data2 = 0;
29 gGuid.Data3 = 0;
30 cbMax = 64;
31 if UseDLL(WINSYSDIR ^ "OLE32.dll") < 0 then
32 MessageBox("不能打开 OLE32.DLL.文件!", WARNING);
33 return -1;
34 endif;
35
36 // 调用OLE32.DLL中的函数CoCreateGuid获取GUID - pGuid
37 nResult = CoCreateGuid(pGuid);
38 if nResult < 0 then
39 MessageBox("调用 OLE32.DLL 失败 - 函数:CoCreateGuid()", WARNING);
40 return -1;
41 endif;
42
43 // 调用OLE32.DLL中的函数StringFromGUID2并转换pGuid为串 - strGuid
44 nResult = StringFromGUID2(pGuid, lpszGuid, cbMax);
45 if nResult < 0 then
46 MessageBox("调用 OLE32.DLL 失败 - 函数:StringFromGUID2()", WARNING);
47 return -1;
48 endif;
49
50 // 转换unicode串strGuid为ANSI串
51 for i = 0 to nResult - 1
52 strGuid[i] = lpszGuid [i*2];
53 endfor;
54
55 nResult = StrSub(strGuid, strGuid, 0, 39);
56 if nResult < 0 then
57 MessageBox("转换 GUID 失败.", WARNING);
58 return -1;
59 endif;
60
61 nResult = UnUseDLL("OLE32.dll");
62
63 end;
保存上述代码为:CreateStringGUID.rul,在主程序中这样调用:
#include "CreateStringGUID.rul"
STRING StringGUID
// 生成服务器GUID号

CreateStringGUID(StringGUID);

更多Installshield打包技术交流问题可查看Appinstall论坛(www.appinstall.cn)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息