论坛风格切换切换到宽版
  • 2276阅读
  • 4回复

用INNO做的安装包退出就出现Runtime error是怎么回事? [复制链接]

上一主题 下一主题
离线2015
 

发帖
48
金钱
459
威望
46
只看楼主 倒序阅读 0 发表于: 2015-12-31

加了水纹代码红色部分才会这样的:


begin
disablewater();
  bmp.Free;
DeinitSkin
end;
[Code]

{ RedesignWizardFormBegin } // 不要删除这一行代码。
// 不要修改这一段代码,它是自动生成的。
procedure RedesignWizardForm;
begin
{ ReservationBegin }
  // 这一部分是提供给你的,你可以在这里输入一些补充代码。

{ ReservationEnd }
end;
// 不要修改这一段代码,它是自动生成的。
{ RedesignWizardFormEnd } // 不要删除这一行代码。

const MF_BYPOSITION=$400;

function DeleteMenu(HMENU: HWND; uPosition: UINT; uFlags: UINT): BOOL;
external 'DeleteMenu@user32.dll stdcall';

function GetSystemMenu(HWND: hWnd; bRevert: BOOL): HWND;
external 'GetSystemMenu@user32.dll stdcall';



离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2016-01-04
把你的全部脚本发上来吧
离线2015

发帖
48
金钱
459
威望
46
只看该作者 2 发表于: 2016-01-05
注意看下那段“判断是否已安装原版程序代码”,加上才出现这情况。
水纹素材测试.rar (3 K) 下载次数:0


离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2016-01-06
只保留第一个 [Code],其它的 [Code] 删除掉。
离线2015

发帖
48
金钱
459
威望
46
只看该作者 4 发表于: 2016-01-08
谢谢虎版回答,我删了其它的[Code],但还是出现这样的情况。我试了这样,如果把红色部分移到下面的begin就不会出现这情况,但问题是退出时有无窗口弹岀,然后突然会全消失的。




[Setup]
AppName=Adobe After Effects CC 2015
AppVerName=Adobe
AppPublisher=Adobe
DefaultDirName={commondesktop}\..\Adobe
OutputDir=C:\Documents and Settings\Administrator\桌面
OutputBaseFilename=Adobe
SolidCompression=yes
Compression=lzma
LicenseFile=C:\Documents and Settings\Administrator\桌面\Adobe.txt
DisableDirPage=yes
DisableProgramGroupPage=yes
DirExistsWarning=no
Uninstallable=no
SetupIconFile=C:\Documents and Settings\Administrator\桌面\q.ico
RestartIfNeededByRun=no
ShowLanguageDialog=auto
DisableReadyMemo=yes
;如果设置为 yes,无显示准备安装向导页
[Files]
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: {#ExtendDir}\ISSkin\Styles\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: "{#PluginDir}\waterctrl.dll"; Flags: dontcopy
Source: "C:\Documents and Settings\Administrator\桌面\zc.bmp"; Flags: dontcopy
Source: "C:\Documents and Settings\Administrator\桌面\Adobe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion"

[Messages]
BeveledLabel=Adobe


[Code]
//Inno Setup 插件:水纹特效(V2)
function enablewater(ParentWnd: HWND; Left, Top: integer; Bmp: HBITMAP;
     WaterRadius, WaterHeight: integer): BOOL; external 'enablewater@files:waterctrl.dll stdcall';
//ParentWnd     放置特效窗口的父窗口句柄。
//Left          左位置
//Top           上位置
//Bmp           位图句柄。
//WaterRadius   水纹半径,会令到水纹看起来范围更广。
//WaterHeight   水纹高度,会令到水纹看起来更深。
//注意,水纹插件自动根据图片来设定高度和宽度,
//另外水纹底图必须是翻转的图片,显示的时候会翻转图片来显示。

function waterblob(x, y: integer; radius, height: integer): BOOL; external 'waterblob@files:waterctrl.dll stdcall';
// 在 x,y 点产生半径为radius, 高度为height 的水纹。

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';
//v2 新增,设置水纹插件的父句柄

var
  bmp: TBitmap;
//Inno Setup 插件:水纹特效(V2)

//判断是否已安装原版程序代码

function InitializeSetup(): Boolean;
begin
  InitSkin('Office2007', 'NormalBlack.ini');
        Result := True;
        if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Adobe') then
  begin
  MsgBox('未检测原英文版程序,请先行安装!'#10#13#10#13'软件汉化:Adobe2016' , mbInformation, MB_OK);
  Result := False;
end;
end;

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

{ RedesignWizardFormBegin } // 不要删除这一行代码。
// 不要修改这一段代码,它是自动生成的。
procedure RedesignWizardForm;
begin
{ ReservationBegin }
  // 这一部分是提供给你的,你可以在这里输入一些补充代码。

{ ReservationEnd }
end;
// 不要修改这一段代码,它是自动生成的。
{ RedesignWizardFormEnd } // 不要删除这一行代码。

const MF_BYPOSITION=$400;

function DeleteMenu(HMENU: HWND; uPosition: UINT; uFlags: UINT): BOKL;
external 'DeleteMenu@user32.dll stdcall';

function GetSystemMenu(HWND: hWnd; bRevert: BOOL): HWND;
external 'GetSystemMenu@user32.dll stdcall';

procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox(#13 'Copyright (C) Adobe' , mbInformation, MB_OK);
end;

procedure URLLabelOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExec('open', 'http://www.adobe.com/cn/ ', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure InitializeWizard();
var
  AboutButton, CancelButton: TButton;
  URLLabel: TNewStaticText;
  LabelDate: Tlabel;
begin
WizardForm.DirBrowseButton.Enabled := False;
WizardForm.DirEdit.Enabled := False;

begin
DeleteMenu(GetSystemMenu(wizardform.handle,false),8,MF_BYPOSITION);
DeleteMenu(GetSystemMenu(wizardform.handle,false),7,MF_BYPOSITION);
end;


         WizardForm.WelcomeLabel2.Autosize := true;
  LabelDate := Tlabel.Create(WizardForm);
  LabelDate.Autosize := true;
  LabelDate.Caption :='';
  LabelDate.Parent := WizardForm.WelcomePage;
  LabelDate.Left := WizardForm.WelcomeLabel2.Left;
  LabelDate.Top := WizardForm.WelcomeLabel2.Top +WizardForm.WelcomeLabel2.Height +20;
LabelDate.Parent := WizardForm.WelcomePage;
LabelDate.Left := WizardForm.WelcomeLabel2.Left;
LabelDate.Top:=WizardForm.WelcomeLabel2.Top+WizardForm.WelcomeLabel2.Height +20;
LabelDate.Font.Color :=clRed

  WizardForm.FilenameLabel.Visible :=false;
  CancelButton := WizardForm.CancelButton;
  AboutButton := TButton.Create(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.Parent := WizardForm;
  URLLabel := TNewStaticText.Create(WizardForm);
  URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
  URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
  URLLabel.Caption := 'adobe';
  URLLabel.OnClick := @URLLabelOnClick;
  URLLabel.Parent := WizardForm;
  URLLabel.Font.Style := URLLabel.Font.Style;
  URLLabel.Font.Color := clBlue;
  URLLabel.Cursor := crHand;
  URLLabel.Cursor := crHand;
begin
  ExtractTemporaryFile('zc.bmp');
  bmp := TBitmap.create;
  bmp.LoadFromFile(ExpandConstant('{tmp}\zc.bmp'));

  enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50);
end;
end;

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

procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep=ssDone then ShellExec('open', 'http://www.adobe.com/cn/ ', '', '',
SW_SHOWNORMAL,
ewNoWait, ErrorCode); end;

[Languages]
Name: cn; MessagesFile: "compiler:Default.isl"
Name: tw; MessagesFile: "compiler:Languages\ChineseTrad.isl"







本帖提到的人: @gnatix