close

前面有介紹透過Google雲端來更新程式。

首先取得自己的程式版號

//取版號

function GetFileVersion: String;
var
  mStr:String;
  i:integer;
begin

  mStr := GetVersionInfo('FileVersion') ;
  While Pos('.', mStr)>0 do
  begin
    I := Pos('.',mStr);
    Delete(mStr, I, 1);
  end ;
  Result := mStr;
end;

 

下面這是非作者所寫,幫他用藍色字框起來.....非原作

//原型

function GetVersionInfo(AIdent: String): String;

type
  TLang = packed record
    Lng, Page: WORD;
  end;

  TLangs = array [0 .. 10000] of TLang;

  PLangs = ^TLangs;

var
  BLngs: PLangs;
  BLngsCnt: Cardinal;
  BLangId: String;
  RM: TMemoryStream;
  RS: TResourceStream;
  BP: PChar;
  BL: Cardinal;
  BId: String;

begin
  // Assume error
  Result := '';

  RM := TMemoryStream.Create;
  try
    // Load the version resource into memory
    RS := TResourceStream.CreateFromID(HInstance, 1, RT_VERSION);
    try
      RM.CopyFrom(RS, RS.Size);
    finally
      FreeAndNil(RS);
    end;

    // Extract the translations list
    if not VerQueryValue(RM.Memory, '\\VarFileInfo\\Translation', Pointer(BLngs), BL) then
      Exit; // Failed to parse the translations table
    BLngsCnt := BL div sizeof(TLang);
    if BLngsCnt <= 0 then
      Exit; // No translations available

    // Use the first translation from the table (in most cases will be OK)
    with BLngs[0] do
      BLangId := IntToHex(Lng, 4) + IntToHex(Page, 4);

    // Extract field by parameter
    BId := '\\StringFileInfo\\' + BLangId + '\\' + AIdent;
    if not VerQueryValue(RM.Memory, PChar(BId), Pointer(BP), BL) then
      Exit; // No such field

    // Prepare result
    Result := BP;
  finally
    FreeAndNil(RM);
  end;
end;

 

OK這時候我們就能透過indyHttp 來比較線上版本以及本地端版本的差異了

 

接著把程式封裝成一隻安裝的EXE

可以用這個工具,非常的好用重點是他一定是Delphi 寫出來的必須得支持哈哈

Delphi 對於個人用戶的收費方式實在是讓人覺得有點難以接受.....

 

工具名稱是這個

Inno Setup 

點選連結可以過去。

 

怎麼使用的話可以參考這個網址

Inno教學

 

太進階的我也不會我只會傻呼呼包裝。剩下給程式做

 

當前面動作都完成之後,依樣上傳到GOOGLE透過INDY抓取主程式

抓下來之後將路徑切換成執行目錄下再利用

  ShellExecute(0, PChar('open'), PChar(Version), nil, nil, SW_SHOW);

執行他 同時關閉應用程式。則不會被占用所影響

..

arrow
arrow
    文章標籤
    Delphi
    全站熱搜

    kuraki5336 發表在 痞客邦 留言(0) 人氣()