极品五笔字型输入法 v6.6 (无插件版)[RAR]

  极品五笔字型是一款不错的输入法。很可惜,其较新 6.6 版却捆绑了流氓软件。雅虎软件工具包、保兰德尔彩信类似的程序就不多介绍了。
  Symantec AntiVirus v10.1.4.4000 病毒库 v2007-1-14 rev.8 报其在临时目录下生成以 is- 开头文件名随机的 tmp 文件包含 Adware.Borlan 广告软件,其在 Symantec 网站的描述如下:
引用内容 引用内容
Updated: July 13, 2006 02:37:17 PM PDT
Type: Adware
Risk Impact: Medium
File Names: stdup.dll
Systems Affected: Windows 2000, Windows 95, Windows 98, Windows Me, Windows Server 2003, Windows XP

BehaviorAdware.Borlan acts as an Internet Explorer browser helper object which displays Chinese based advertisements while users browse the Internet.
SymptomsOne or more files detected as Adware.Borlan
TransmissionThis risk must be manually installed.
ProtectionVirus Definitions (LiveUpdate™ Weekly) November 23, 2005
Virus Definitions (Intelligent Updater) November 22, 2005

  为此我只好研究了一下 Inno Setup 的编译和解包自己做了一个无插件版的安装程序,主要是自己用咯,看在我在这上面花了些时间不能白费,于是放出来也让其他B视流氓软件的网友们分享一下。
  主要的修改是去掉了插件并设置查看“极品五笔自述”文件为可选。本人仅为学习 Inno Setup 做这些,为此贴上 Inno Setup 的 iss 脚本文件如下:
引用内容 引用内容
[Setup]
AppName=极品五笔Win9x/Me/2000/XP通用版(无插件)
AppVerName=极品五笔 v6.6
DefaultDirName={pf}\极品五笔
OutputBaseFilename=jpwb66
Compression=lzma
LicenseFile=embedded\License.txt
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp

[Files]
Source: "embedded\uninstall,1.exe"; DestDir: "embedded"; DestName: "uninstall.exe";
Source: "embedded\uninstall,2.exe"; DestDir: "embedded"; DestName: "uninstall.exe";
Source: "{win}\help\jpwb.hlp"; DestDir: "{win}\help"; MinVersion: 4.0.950,0.0; Flags: ignoreversion
Source: "{win}\help\jpwb.chm"; DestDir: "{win}\help"; MinVersion: 0.0,4.0.1381; Flags: ignoreversion
Source: "{win}\system\jpwb.IME"; DestDir: "{win}\system"; MinVersion: 4.0.950,0.0; Flags: ignoreversion
Source: "{win}\system\jpwb.MB"; DestDir: "{win}\system"; MinVersion: 4.0.950,0.0; Flags: ignoreversion
Source: "{win}\system32\jpwb.IME"; DestDir: "{win}\system32"; MinVersion: 0.0,4.0.1381; Flags: ignoreversion
Source: "{app}\jpwb.IME"; DestDir: "{app}";
Source: "{win}\system32\jpwb.MB"; DestDir: "{win}\system32"; MinVersion: 0.0,4.0.1381; Flags: ignoreversion
Source: "{app}\jpwb.MB"; DestDir: "{app}";
Source: "{app}\Readme.txt"; DestDir: "{app}";
Source: "{app}\卸载说明.txt"; DestDir: "{app}";
Source: "embedded\License,1.txt"; DestDir: "embedded"; DestName: "License.txt";
Source: "embedded\CompiledCode.bin"; DestDir: "embedded";
Source: "embedded\WizardImage,1.bmp"; DestDir: "embedded"; DestName: "WizardImage.bmp";
Source: "embedded\WizardSmallImage,1.bmp"; DestDir: "embedded"; DestName: "WizardSmallImage.bmp";
Source: "embedded\License,2.txt"; DestDir: "embedded"; DestName: "License.txt";
Source: "embedded\WizardImage,2.bmp"; DestDir: "embedded"; DestName: "WizardImage.bmp";
Source: "embedded\WizardSmallImage,2.bmp"; DestDir: "embedded"; DestName: "WizardSmallImage.bmp";

[Registry]
;Added by Me for uninstall ime, for is's function do not write key:(
;And in my xp(en) do not alow chinese key name :((( And do not add uninstdeletekey flags,I delete it myself
;Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\jpwb";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: ""; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: ""; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "词语联想"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "词语输入"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "逐渐提示"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "外码提示"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "插空格"; ValueType: Dword; ValueData: "$0";
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\极品五笔"; ValueName: "光标跟随"; ValueType: Dword; ValueData: "$1";

[code]
const
   sMyLayoutText ='极品五笔';
   sMyStoreKey ='Software\Microsoft\Windows\CurrentVersion\jpwb'; // the 2 used to store global layout name by regshot
   sMyStoreValue= 'keyboardlayout';
function ImmInstallIME(lpIMEFile: String;lpLayouttext: String): THandle;
external 'ImmInstallIMEA@imm32.dll stdcall';
function UnloadKeyboardLayout(hkl:THandle):Boolean;
external 'UnloadKeyboardLayout@user32.dll stdcall';
procedure CurStepChanged(CurStep: TSetupStep);
var hkl: THandle;
begin
if (CurStep=ssDone) and (UsingWinNT=True) then
     begin
     hkl := ImmInstallIME(ExpandConstant('{sys}\jpwb.IME'),sMyLayoutText);
     {I found hkl is the same as the deviceid+languageid string get from GetKeyboardLayoutName(),so I comment below out
     }
     RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\jpwb',
        'keyboardlayout', hkl);
     end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var i:Integer;hkl:Cardinal;lpN,lpOut,lpLayout,lpWholeKey:String; //myarray:Array of LongWord;
begin
   //SetArrayLength(myarray,300);
if (CurUninstallStep=usPostUninstall) and (UsingWinNT=True) then
     begin
     if RegQueryDWordValue(HKEY_LOCAL_MACHINE, sMyStoreKey,sMyStoreValue,hkl) then
        begin
        lpLayout:=Format('%8.8x',[hkl]); //MsgBox(lpLayout, mbInformation, MB_OK);
        //I found lpLayout is the same as hkl after it had been called at LoadKeyboardLayout,so I comment it out by regshot
        //hkl:=LoadKeyboardLayout(lpLayout,1); //KLF_ACTIVATE
        UnloadKeyboardLayout(hkl);
        //SystemParametersInfo(90,0,2052,2); //SPI_SETDEFAULTINPUTLANG=90 does not work :(
        for i:=1 to 32 do //I should use RegEnumValue,but IS does not have this I had to declare..
          begin
          lpN:=Format('%d',[i]);
          if RegQueryStringValue(HKEY_CURRENT_USER,'Keyboard Layout\Preload',lpN,lpOut) then
             begin
             //MsgBox(lpOut,mbInformation,MB_OK);
             if CompareText(lpOut,lpLayout)=0 then        //Insen regshot
                begin
                RegDeleteValue(HKEY_CURRENT_USER,'Keyboard Layout\Preload',Format(lpN,[i]));
                break;
                end;
             end;
          end;
        lpWholeKey:='SYSTEM\CurrentControlSet\Control\Keyboard Layouts\'+lpLayout;
        if RegQueryStringValue(HKEY_LOCAL_MACHINE,lpWholeKey,'Layout Text',lpOut) then
           begin
           if lpOut=sMyLayoutText then
               begin
               RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE,lpWholeKey);
               RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE,sMyStoreKey); //delete storage place
               end;
           end;
        end;
        //SendMessage($ffff,26,0,0);
     end;
end;

[Run]
Filename: "{app}\Readme.txt"; Description: "查看极品五笔自述"; Flags: postinstall shellexec unchecked skipifsilent

Inno Setup 编译器原版下载:http://www.jrsoftware.org/isinfo.php
Inno Setup 编译器汉化版下载:http://www.hanzify.org/index.php?Go=Show::List&ID=7392
Inno Setup Unpacker 解包工具下载:http://www.hanzify.org/?Go=Show::List&ID=8201

极品输入法作者和版权人为常诚;参考了 RegSHOT 的部分 Inno Setup 代码,解决了安装后输入法不出现在状态栏输入法列表中的问题。

最后最新时间:2007-04-08

已打包好的极品五笔字型输入法 v6.6 (无插件版)下载文件 点击下载此文件
[本日志由 parno 于 2008-05-02 02:17 AM 编辑]
上一篇: 修复 Windows XP 任务栏问题的VBS脚本程序
下一篇: ASP 脚本生成 GUID 的实现
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 输入法 安装程序
相关日志:
评论: 0 | 引用: 0 | 查看次数: 28518