亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nsisin.cpp

?? 壓縮解壓工具7-zip源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
{
  AString res = "$";
  if (index < 10)
    res += UIntToString(index);
  else if (index < 20)
  {
    res += "R";
    res += UIntToString(index - 10);
  }
  else if (index < 20 + kNumVarStrings)
    res += kVarStrings[index - 20];
  else
  {
    res += "[";
    res += UIntToString(index);
    res += "]";
  }
  return res;
}

#define NS_SKIP_CODE  252
#define NS_VAR_CODE   253
#define NS_SHELL_CODE 254
#define NS_LANG_CODE  255
#define NS_CODES_START NS_SKIP_CODE

static AString GetShellString(int index)
{
  AString res = "$";
  if (index < kNumShellStrings)
  {
    const char *sz = kShellStrings[index];
    if (sz[0] != 0)
      return res + sz;
  }
  res += "SHELL[";
  res += UIntToString(index);
  res += "]";
  return res;
}

// Based on Dave Laundon's simplified process_string
AString GetNsisString(const AString &s)
{
  AString res;
  for (int i = 0; i < s.Length();)
  {
    unsigned char nVarIdx = s[i++];
    if (nVarIdx > NS_CODES_START && i + 2 <= s.Length())
    {
      int nData = s[i++] & 0x7F;
      unsigned char c1 = s[i++];
      nData |= (((int)(c1 & 0x7F)) << 7);

      if (nVarIdx == NS_SHELL_CODE)
        res += GetShellString(c1);
      else if (nVarIdx == NS_VAR_CODE)
        res += GetVar(nData);
      else if (nVarIdx == NS_LANG_CODE)
        res += "NS_LANG_CODE";
    }
    else if (nVarIdx == NS_SKIP_CODE)
    {
      if (i < s.Length())
        res += s[i++];
    }
    else // Normal char
      res += (char)nVarIdx;
  }
  return res;
}

UString GetNsisString(const UString &s)
{
  UString res;
  for (int i = 0; i < s.Length();)
  {
    wchar_t nVarIdx = s[i++];
    if (nVarIdx > NS_UN_CODES_START && nVarIdx <= NS_UN_CODES_END)
    {
      if (i == s.Length())
        break;
      int nData = s[i++] & 0x7FFF;

      if (nVarIdx == NS_UN_SHELL_CODE)
        res += GetUnicodeString(GetShellString(nData >> 8));
      else if (nVarIdx == NS_UN_VAR_CODE)
        res += GetUnicodeString(GetVar(nData));
      else if (nVarIdx == NS_UN_LANG_CODE)
        res += L"NS_LANG_CODE";
    }
    else if (nVarIdx == NS_UN_SKIP_CODE)
    {
      if (i == s.Length())
        break;
      res += s[i++];
    }
    else // Normal char
      res += (char)nVarIdx;
  }
  return res;
}

AString CInArchive::ReadString2A(UInt32 pos) const
{
  return GetNsisString(ReadStringA(pos));
}

UString CInArchive::ReadString2U(UInt32 pos) const
{
  return GetNsisString(ReadStringU(pos));
}

AString CInArchive::ReadString2(UInt32 pos) const
{
  if (IsUnicode)
    return UnicodeStringToMultiByte(ReadString2U(pos));
  else
    return ReadString2A(pos);
}

AString CInArchive::ReadString2Qw(UInt32 pos) const
{
  return "\"" + ReadString2(pos) + "\"";
}

#define DEL_DIR 1
#define DEL_RECURSE 2
#define DEL_REBOOT 4
// #define DEL_SIMPLE 8

static const int kNumEntryParams = 6;

struct CEntry
{
  UInt32 Which;
  UInt32 Params[kNumEntryParams];
  AString GetParamsString(int numParams);
  CEntry()
  {
    Which = 0;
    for (UInt32 j = 0; j < kNumEntryParams; j++)
      Params[j] = 0;
  }
};

AString CEntry::GetParamsString(int numParams)
{
  AString s;
  for (int i = 0; i < numParams; i++)
  {
    s += " ";
    UInt32 v = Params[i];
    if (v > 0xFFF00000)
      s += IntToString((Int32)Params[i]);
    else
      s += UIntToString(Params[i]);
  }
  return s;
}

#ifdef NSIS_SCRIPT

static AString GetRegRootID(UInt32 val)
{
  const char *s;
  switch(val)
  {
    case 0:  s = "SHCTX"; break;
    case 0x80000000:  s = "HKCR"; break;
    case 0x80000001:  s = "HKCU"; break;
    case 0x80000002:  s = "HKLM"; break;
    case 0x80000003:  s = "HKU";  break;
    case 0x80000004:  s = "HKPD"; break;
    case 0x80000005:  s = "HKCC"; break;
    case 0x80000006:  s = "HKDD"; break;
    case 0x80000050:  s = "HKPT"; break;
    case 0x80000060:  s = "HKPN"; break;
    default:
      return UIntToString(val); break;
  }
  return s;
}

#endif

HRESULT CInArchive::ReadEntries(const CBlockHeader &bh)
{
  _posInData = bh.Offset + GetOffset();
  AString prefixA;
  UString prefixU;
  for (UInt32 i = 0; i < bh.Num; i++)
  {
    CEntry e;
    e.Which = ReadUInt32();
    for (UInt32 j = 0; j < kNumEntryParams; j++)
      e.Params[j] = ReadUInt32();
    #ifdef NSIS_SCRIPT
    if (e.Which != EW_PUSHPOP && e.Which < sizeof(kCommandPairs) / sizeof(kCommandPairs[0]))
    {
      const CCommandPair &pair = kCommandPairs[e.Which];
      Script += pair.Name;
    }
    #endif

    switch (e.Which)
    {
      case EW_CREATEDIR:
      {
        if (IsUnicode)
        {
          prefixU.Empty();
          prefixU = ReadString2U(e.Params[0]);
        }
        else
        {
          prefixA.Empty();
          prefixA = ReadString2A(e.Params[0]);
        }
        #ifdef NSIS_SCRIPT
        Script += " ";
        if (IsUnicode)
          Script += UnicodeStringToMultiByte(prefixU);
        else
          Script += prefixA;
        #endif
        break;
      }

      case EW_EXTRACTFILE:
      {
        CItem item;
        item.IsUnicode = IsUnicode;
        if (IsUnicode)
        {
          item.PrefixU = prefixU;
          item.NameU = ReadString2U(e.Params[1]);
        }
        else
        {
          item.PrefixA = prefixA;
          item.NameA = ReadString2A(e.Params[1]);
        }
        /* UInt32 overwriteFlag = e.Params[0]; */
        item.Pos = e.Params[2];
        item.MTime.dwLowDateTime = e.Params[3];
        item.MTime.dwHighDateTime = e.Params[4];
        /* UInt32 allowIgnore = e.Params[5]; */
        if (Items.Size() > 0)
        {
          /*
          if (item.Pos == Items.Back().Pos)
            continue;
          */
        }
        Items.Add(item);
        #ifdef NSIS_SCRIPT
        Script += " ";

        if (IsUnicode)
          Script += UnicodeStringToMultiByte(item.NameU);
        else
          Script += item.NameA;
        #endif
        break;
      }


      #ifdef NSIS_SCRIPT
      case EW_UPDATETEXT:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += UIntToString(e.Params[1]);
        break;
      }
      case EW_SETFILEATTRIBUTES:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += UIntToString(e.Params[1]);
        break;
      }
      case EW_IFFILEEXISTS:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += UIntToString(e.Params[1]);
        Script += " ";
        Script += UIntToString(e.Params[2]);
        break;
      }
      case EW_RENAME:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += ReadString2(e.Params[1]);
        Script += " ";
        Script += UIntToString(e.Params[2]);
        break;
      }
      case EW_GETFULLPATHNAME:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += ReadString2(e.Params[1]);
        Script += " ";
        Script += UIntToString(e.Params[2]);
        break;
      }
      case EW_SEARCHPATH:
      {
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += ReadString2(e.Params[1]);
        break;
      }
      case EW_GETTEMPFILENAME:
      {
        AString s;
        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += ReadString2(e.Params[1]);
        break;
      }

      case EW_DELETEFILE:
      {
        UInt64 flag = e.Params[1];
        if (flag != 0)
        {
          Script += " ";
          if (flag == DEL_REBOOT)
            Script += "/REBOOTOK";
          else
            Script += UIntToString(e.Params[1]);
        }
        Script += " ";
        Script += ReadString2(e.Params[0]);
        break;
      }
      case EW_RMDIR:
      {
        UInt64 flag = e.Params[1];
        if (flag != 0)
        {
          if ((flag & DEL_REBOOT) != 0)
            Script += " /REBOOTOK";
          if ((flag & DEL_RECURSE) != 0)
            Script += " /r";
        }
        Script += " ";
        Script += ReadString2(e.Params[0]);
        break;
      }
      case EW_STRLEN:
      {
        Script += " ";
        Script += GetVar(e.Params[0]);;
        Script += " ";
        Script += ReadString2Qw(e.Params[1]);
        break;
      }
      case EW_ASSIGNVAR:
      {
        Script += " ";
        Script += GetVar(e.Params[0]);;
        Script += " ";
        Script += ReadString2Qw(e.Params[1]);
        AString maxLen, startOffset;
        if (e.Params[2] != 0)
          maxLen = ReadString2(e.Params[2]);
        if (e.Params[3] != 0)
          startOffset = ReadString2(e.Params[3]);
        if (!maxLen.IsEmpty() || !startOffset.IsEmpty())
        {
          Script += " ";
          if (maxLen.IsEmpty())
            Script += "\"\"";
          else
            Script += maxLen;
          if (!startOffset.IsEmpty())
          {
            Script += " ";
            Script += startOffset;
          }
        }
        break;
      }
      case EW_STRCMP:
      {
        Script += " ";

        Script += " ";
        Script += ReadString2Qw(e.Params[0]);
        
        Script += " ";
        Script += ReadString2Qw(e.Params[1]);

        for (int j = 2; j < 5; j++)
        {
          Script += " ";
          Script += UIntToString(e.Params[j]);
        }
        break;
      }
      case EW_INTCMP:
      {
        if (e.Params[5] != 0)
          Script += "U";

        Script += " ";
        Script += ReadString2(e.Params[0]);
        Script += " ";
        Script += ReadString2(e.Params[1]);

        for (int i = 2; i < 5; i++)
        {
          Script += " ";
          Script += UIntToString(e.Params[i]);
        }
        break;
      }
      case EW_INTOP:
      {
        Script += " ";
        Script += GetVar(e.Params[0]);
        Script += " ";
        int numOps = 2;
        AString op;
        switch (e.Params[3])
        {
          case 0: op = '+'; break;
          case 1: op = '-'; break;
          case 2: op = '*'; break;
          case 3: op = '/'; break;
          case 4: op = '|'; break;
          case 5: op = '&'; break;
          case 6: op = '^'; break;
          case 7: op = '~'; numOps = 1; break;
          case 8: op = '!'; numOps = 1; break;
          case 9: op = "||"; break;
          case 10: op = "&&"; break;
          case 11: op = '%'; break;
          default: op = UIntToString(e.Params[3]);
        }
        AString p1 = ReadString2(e.Params[1]);
        if (numOps == 1)
        {
          Script += op;
          Script += p1;
        }
        else
        {
          Script += p1;
          Script += " ";
          Script += op;
          Script += " ";
          Script += ReadString2(e.Params[2]);
        }
        break;
      }

      case EW_PUSHPOP:
      {
        int isPop = (e.Params[1] != 0);
        if (isPop)
        {
          Script += "Pop";
          Script += " ";
          Script += GetVar(e.Params[0]);;
        }
        else
        {
          int isExch = (e.Params[2] != 0);
          if (isExch)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色片在线观看| 国产精品亚洲а∨天堂免在线| 在线观看91精品国产麻豆| 国产69精品久久99不卡| 国产一区二区三区四区五区入口 | 国产欧美日韩不卡| 日韩一级二级三级精品视频| 在线观看日韩国产| 在线亚洲欧美专区二区| 欧美国产日韩在线观看| 中文字幕中文字幕一区| 国产精品亲子伦对白| 中文字幕亚洲区| 亚洲综合色网站| 亚洲综合视频网| 97久久精品人人做人人爽50路| 一本色道久久综合亚洲aⅴ蜜桃| 99国产精品久久久久久久久久久 | 色噜噜狠狠一区二区三区果冻| 在线免费观看日本欧美| 欧美极品美女视频| 国产精品亚洲第一区在线暖暖韩国| 日韩一区二区免费在线观看| 亚洲高清免费视频| 久久99精品国产麻豆不卡| 国模冰冰炮一区二区| 成人不卡免费av| 国产欧美日韩卡一| 国产99久久久国产精品| 国产欧美精品一区二区三区四区| 国产在线精品视频| 精品福利在线导航| 国产精品嫩草影院av蜜臀| 国产乱一区二区| 欧美国产日本视频| av在线免费不卡| 91精品国产全国免费观看| 久久综合九色综合97_久久久 | 色噜噜狠狠色综合中国| 亚洲人成伊人成综合网小说| 青青草原综合久久大伊人精品优势| 欧美午夜精品久久久久久孕妇 | 久久人人97超碰com| 亚洲精品综合在线| 久久狠狠亚洲综合| 欧美在线一区二区| 水野朝阳av一区二区三区| 国产成人午夜片在线观看高清观看| 欧美视频三区在线播放| 日韩精品视频网站| 久久久夜色精品亚洲| 成人深夜在线观看| 久久久亚洲综合| 99国产精品久久久久久久久久久| 亚洲狠狠爱一区二区三区| 日韩欧美国产系列| 亚洲成人av资源| 在线观看一区日韩| 久久99精品久久久| 亚洲色大成网站www久久九九| 国产精品一区二区三区99| 中文字幕在线不卡| 欧美一区二区三区在线电影 | 日韩电影在线观看网站| 欧美日韩午夜精品| 一区二区在线电影| 欧美成人video| 久久99精品国产麻豆不卡| 中文字幕一区二区不卡| 欧美丰满嫩嫩电影| 成人av电影在线网| 久久精品免费观看| 亚洲三级在线免费| wwww国产精品欧美| 欧美三级一区二区| 懂色av中文字幕一区二区三区| 午夜国产精品影院在线观看| 欧美午夜一区二区三区免费大片| 蜜芽一区二区三区| 欧美久久久久中文字幕| 国产91色综合久久免费分享| 午夜精品久久一牛影视| 中文字幕一区二区三区精华液| 日韩欧美一区在线观看| 91福利区一区二区三区| 国产成人在线视频网站| 青青青爽久久午夜综合久久午夜| 亚洲日本va在线观看| 久久久久国产精品免费免费搜索| 欧美伦理视频网站| 色狠狠综合天天综合综合| 国产91清纯白嫩初高中在线观看 | 国产欧美日韩在线| 欧美一区二区视频在线观看 | 久久福利视频一区二区| 亚洲成av人片一区二区| 亚洲欧美一区二区三区极速播放| 久久一日本道色综合| 日韩写真欧美这视频| 欧美三片在线视频观看| 在线观看欧美日本| 91美女片黄在线| 日韩精品乱码免费| 亚洲午夜久久久久久久久久久| 国产精品久久综合| 中文字幕欧美激情| 久久九九影视网| 色94色欧美sute亚洲线路二| 99精品热视频| www.视频一区| av综合在线播放| 色综合天天综合色综合av| 亚洲一区免费视频| 亚洲h在线观看| 日韩高清在线一区| 视频一区二区三区在线| 午夜精品影院在线观看| 日本怡春院一区二区| 奇米亚洲午夜久久精品| 久草热8精品视频在线观看| 美国三级日本三级久久99| 精品一区二区三区在线视频| 黄色资源网久久资源365| 国产在线视视频有精品| 国产在线观看一区二区| 成人精品一区二区三区中文字幕| 99在线精品观看| 欧美中文一区二区三区| 欧美一区二区在线视频| 日韩无一区二区| 久久精品男人天堂av| 亚洲色图欧美激情| 日韩国产精品大片| 国产宾馆实践打屁股91| 在线免费视频一区二区| 日韩手机在线导航| 国产日产欧美一区二区视频| 亚洲欧美电影院| 三级久久三级久久| 国产精品99久| 欧美性猛片aaaaaaa做受| 日韩一级高清毛片| 中文字幕一区二区不卡| 天堂精品中文字幕在线| 国产精品69毛片高清亚洲| 91蜜桃在线观看| 欧美va亚洲va在线观看蝴蝶网| 亚洲国产精品激情在线观看 | 国产精品久久影院| 日韩高清在线观看| 成人久久18免费网站麻豆| 欧美日韩成人在线一区| 欧美日韩一区中文字幕| 久久精品亚洲国产奇米99| 亚洲人精品午夜| 国产在线精品一区二区夜色| 91视频.com| xf在线a精品一区二区视频网站| 亚洲欧美日本韩国| 国产一区二区三区黄视频| 在线观看一区不卡| 国产欧美一区二区精品性| 日韩高清不卡一区二区三区| 不卡在线视频中文字幕| 日韩一区二区在线播放| 亚洲视频一区在线观看| 精品亚洲免费视频| 精品视频一区三区九区| 国产精品―色哟哟| 精品在线播放免费| 欧美视频完全免费看| 亚洲欧洲国产专区| 国内一区二区在线| 91精品国产高清一区二区三区 | ...xxx性欧美| 国产精品亚洲午夜一区二区三区| 91精品国产全国免费观看| 亚洲与欧洲av电影| 91免费版pro下载短视频| 亚洲国产成人自拍| 国产在线视视频有精品| 欧美一区二区在线不卡| 五月天亚洲婷婷| 欧美日韩一区二区在线视频| 亚洲日本中文字幕区| 99久久99久久免费精品蜜臀| 久久精品水蜜桃av综合天堂| 麻豆久久一区二区| 欧美精品丝袜中出| 亚洲二区在线观看| 欧美日韩一二三区| 亚洲国产日韩av| 91官网在线观看| 伊人夜夜躁av伊人久久| 在线视频一区二区三区| 亚洲午夜国产一区99re久久| 91国内精品野花午夜精品| 亚洲一区在线观看免费| 欧美日韩国产三级| 丝袜脚交一区二区|