转帖: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)
版权归原作者所有,未经同意严禁转载,大家也可以访问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)
相关文章推荐
- 转帖:InstallShield---如何使用脚本生成GUID
- InstallShield---如何使用脚本生成GUID
- 关于UUID和GUID,教你如何使用JDK自带的UUID生成主键。
- 如何使用 CoCreateGUID API 生成与 VB 6 的 GUID
- SQL Server中如何生成GUID C#.NET中如何生成和使用GUID
- 使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本
- 如何使用Shell脚本编译生成Archive文件并导出签名IPA文件。
- Axure RP Pro - jQuery - 如何在Axure RP Pro生成的HTML原型文档中使用自定义脚本
- powerDesign中如何使用脚本生成PDM
- [InstallShield]如何在Script脚本中使用ADO操作数据库
- 如何使用Shell脚本编译生成Archive文件并导出签名IPA文件。
- 如何使用 CoCreateGUID API 以生成一个 GUID 以
- 【Shell脚本】awk中如何使用shell的环境变量
- zabbix如何使用自定义的脚本来获取数据并展示
- Python脚本如何生成Windows可执行文件.exe
- 如何使用JSON Framework库解析与生成json数据(iphone网络篇二)
- 使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
- 添加一个文件夹及一些文件如何使用git生成patch git补丁 新文件 图片资源文件
- 如何生成Detours.lib——Detours的使用准备
- 如何使用openssl生成RSA公钥和私钥对