论坛风格切换切换到宽版
  • 4555阅读
  • 26回复

请教老虎版主水波插件问题 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-09-08
用户被禁言,该主题自动屏蔽!
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 1 发表于: 2015-09-08
用户被禁言,该主题自动屏蔽!
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 2 发表于: 2015-09-09
关于水纹的问题:跟语言选择毫无关系。你那个 “开始位图1.bmp” 文件是有问题的,可能不是标准的 bmp 文件。你换一个位图文件试试看。


离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-09-09
关于:由于在卸载时需要判断组件是否选择,再进行操作,但是到
if CurUninstallStep = usPostUninstall then
时,已经找不到组件信息了,所以会弹出错误提示,但是使用
usUninstall 会造成误删,怎么实现点击卸载按钮后才删除,不知道怎么做?

定义一个全局变量,在 usUninstall 时检查是否有某个组件,并且将检查结果保存到所定义的全局变量中。在 usPostUninstall 时就不要检查组件了,只要读取全局变量的值就可以达到同样的目录。下面以那个删除 Hosts 的代码为例:

var
   TaskSelected: boolean;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep );
begin          
  if CurUninstallStep = usUninstall then           // 卸载文件前检查安装时是否选择了任务
   TaskSelected := WasTaskSelected('noad', '{#emit SetupSetting("AppId")}');
  if CurUninstallStep = usPostUninstall then       // 卸载文件后运行
    if TaskSelected then    
      begin
        StartRemoveHosts;                             // 开始删除项目(必需)
        RemoveHosts('127.0.0.1 www.abcd.com');        // 添加要删除的项目
        RemoveHosts('127.0.0.1 www.abcd.net');        // 添加要删除的项目
        EndRemoveHosts;                               // 结束删除项目(必需)
      end;
end;

离线我爱你

发帖
22
金钱
220
威望
22
只看该作者 4 发表于: 2015-09-09
回 3楼(gnatix) 的帖子
请教虎版,这样的水波效果实现了为什么无法正常显示右下角自定义链接的效果。自定义添加的类似关于按钮无法正常显示,可有解救方法。或者麻烦版主贴一下能使用的代码,让小弟参考学习。谢谢。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 5 发表于: 2015-09-09
用户被禁言,该主题自动屏蔽!
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 6 发表于: 2015-09-09
用户被禁言,该主题自动屏蔽!
离线我爱你

发帖
22
金钱
220
威望
22
只看该作者 7 发表于: 2015-09-09
回 6楼(546242502) 的帖子
546242502:当时想到这方法了,不过一转念就忘了,感谢老虎版主指点,知道怎么解决了。[表情]测试了,不过在多语言多组件多安装路径这样还是比先前的办法麻烦许多。 (2015-09-09 14:39) 

大神,这样的水波效果实现了为什么无法正常显示右下角自定义链接的效果。自定义添加的类似关于按钮无法正常显示,可有解救方法。或者麻烦贴一下能使用的代码,让小弟参考学习。谢谢。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 8 发表于: 2015-09-09
用户被禁言,该主题自动屏蔽!
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 9 发表于: 2015-09-10
回 4楼(我爱你) 的帖子
我爱你:请教虎版,这样的水波效果实现了为什么无法正常显示右下角自定义链接的效果。自定义添加的类似关于按钮无法正常显示,可有解救方法。或者麻烦版主贴一下能使用的代码,让小弟参考学习。 .. (2015-09-09 13:20)

水波效果和自定义链接效果两者相互没有关系的,当然相互不会影响。下面给你一个精简的脚步。

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Files]
Source: "开始位图.bmp"; Flags: dontcopy
Source: "waterctrl.dll"; Flags: dontcopy

[CODE]
var
  bmp: TBitmap;
  AboutButton: TLabel;

function enablewater(ParentWnd: HWND; Left, Top: integer; Bmp: HBITMAP; WaterRadius, WaterHeight: integer): BOOL;
  external 'enablewater@files:waterctrl.dll stdcall';
function waterblob(x, y: integer; radius, height: integer): BOOL;
  external 'waterblob@files:waterctrl.dll stdcall';
function flattenwater(): BOOL; external 'flattenwater@files:waterctrl.dll stdcall';
function disablewater(): BOOL; external 'disablewater@files:waterctrl.dll stdcall';
function setwaterparent(ParentWnd: HWND): BOOL; external 'setwaterparent@files:waterctrl.dll stdcall';

procedure AboutButtonOnClick(Sender: TObject);
begin
  MsgBox('这是你的说明...', mbInformation, MB_OK);
end;

procedure AboutButtonOnMouseEnter(Sender: TObject);
begin
  AboutButton.Font.Style := [fsBold];
end;

procedure AboutButtonOnMouseLeave(Sender: TObject);
begin
  AboutButton.Font.Style := [];
end;

procedure InitializeWizard();
var
  CancelButton: TButton;
begin
  ExtractTemporaryFile('开始位图.bmp');
  bmp := TBitmap.create;
  bmp.LoadFromFile(ExpandConstant('{tmp}\开始位图.bmp'));
  Wizardform.WelcomeLabel1.Visible:= false;  //   屏蔽安装向导页面上面的文字
  Wizardform.WelcomeLabel2.Visible:= false;  //   屏蔽安装向导页面上面的文字
  Wizardform.WizardBitmapImage.Width:= Wizardform.InnerPage.Width;  // 放大图像到整个界面宽度
  Wizardform.WizardBitmapImage.Height:= Wizardform.InnerPage.Height;
  enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50);
  //
  CancelButton := WizardForm.CancelButton;
  AboutButton := TLabel.Create(WizardForm);
  AboutButton.Parent := WizardForm;
  AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
  AboutButton.Top := CancelButton.Top;
  AboutButton.Width := CancelButton.Width;
  AboutButton.Height := CancelButton.Height;
  AboutButton.Caption := '关于(&A)...';
  AboutButton.OnClick := @AboutButtonOnClick;
  AboutButton.Font.Color := clBlue;
  AboutButton.Cursor := crHand;
  AboutButton.OnMouseEnter := @AboutButtonOnMouseEnter;
  AboutButton.OnMouseLeave := @AboutButtonOnMouseLeave;
end;

procedure CurPageChanged(CurPage: Integer);
begin
  if CurPage = wpWelcome then
    begin
      setwaterparent(WizardForm.WelcomePage.Handle);
      waterblob(70, 198, 10, 1000);
    end
  else if CurPage = wpFinished then
    begin
      setwaterparent(WizardForm.FinishedPage.Handle);
      waterblob(70, 198, 10, 1000);
    end else
      flattenwater();
end;

procedure DeinitializeSetup();
begin
  disablewater();
  bmp.Free;
end;