Install.dpr
上传用户:wen198501
上传日期:2013-04-01
资源大小:335k
文件大小:2k
源码类别:

输入法编程

开发平台:

Delphi

  1. program Install;
  2. {$R Install.res}
  3. uses Windows, Imm;
  4. function PathFileExists(pszPath: PChar): Bool; stdcall; external 'shlwapi.dll' Name 'PathFileExistsA';
  5. const
  6.   AppName = 'Wingb_Mz  Installer';
  7.   ImePath = '..ImeWingb_Mz.Ime';
  8.   ImeFile = 'Wingb_Mz.Ime';
  9.   ImeName = '中文 (简体) - 区位Delphi版';
  10. var
  11.   SysPath: array[0..MAX_PATH] of Char;
  12.   PathLen: DWord;
  13. begin
  14.   // 安装确认
  15.   if (MessageBox(0, '您要安装 "区位输入法Delphi版" 吗?   ', AppName, MB_YESNO) <> ID_YES) then Exit;
  16.   // 来源路径
  17.   if (PathFileExists(ImePath) = False) then
  18.   begin
  19.     MessageBox(0, PChar('未找到安装源 - "' + ImePath + '",  安装失败!!   '), AppName, MB_OK);
  20.     Exit;
  21.   end;
  22.   // 系统目录
  23.   PathLen := GetSystemDirectory(SysPath, MAX_PATH);
  24.   if (PathLen = 0) or (PathFileExists(SysPath) = False) then
  25.   begin
  26.     MessageBox(0, '未找到Windows系统目录, 安装失败!!   ', AppName, MB_OK);
  27.     Exit;
  28.   end;
  29.   // 目标路径
  30.   if (SysPath[PathLen - 1] <> '') then
  31.   begin
  32.     SysPath[PathLen] := '';
  33.     Inc(PathLen);
  34.   end;
  35.   lStrCpy(@SysPath[PathLen], ImeFile);
  36.   // 覆盖确认
  37.   if (PathFileExists(SysPath) = True) then
  38.   begin
  39.     if (MessageBox(0, PChar('目标文件 - "' + SysPath + '" 已存在, 尝试覆盖?   '), AppName, MB_YESNO) <> ID_YES) then Exit;
  40.     DeleteFile(SysPath);
  41.     if (PathFileExists(SysPath) = True) then
  42.     begin
  43.       MessageBox(0, PChar('文件 - "' + SysPath + '" 正在使用中, 无法覆盖, 安装失败!!   '), AppName, MB_OK);
  44.       Exit;
  45.     end;
  46.   end;
  47.   // 复制文件
  48.   if (CopyFile(ImePath, SysPath, False) = False) then
  49.   begin
  50.     MessageBox(0, PChar('无法复制 "' + ImePath + '" 至 "' + SysPath + '", 安装失败!!   '), AppName, MB_OK);
  51.     Exit;
  52.   end;
  53.   // 安装Ime
  54.   if (ImmInstallIme(SysPath, ImeName) = 0) then
  55.     MessageBox(0, PChar('Ime模块 - "' + SysPath + '" 安装失败!!   :~(   '), AppName, MB_OK)
  56.   else
  57.     MessageBox(0, PChar('Ime模块 - "' + SysPath + '" 安装成功!!   :~)   '), AppName, MB_OK);
  58. end.