zoukankan      html  css  js  c++  java
  • 转帖:InstallShield如何使用脚本生成GUID

    朋友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(POINTERBYREF STRINGLONG);
     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, 039);
    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); 

  • 相关阅读:
    hdu1078 记忆化dfs
    hdu1142 dij+记忆化深搜
    UVA 11374 dijkstra预处理+枚举
    poj1502 单源最短路径
    hdu1814 2-SAT 暴力搜
    macos 10.15.1 pip3安装提示权限不足
    将安装器信息下载到目标卷宗失败
    Mac修改默认python版本
    努力吧,少年
    Implement strStr() 字符串匹配
  • 原文地址:https://www.cnblogs.com/wanbinghong/p/1815090.html
Copyright © 2011-2022 走看看