安装前在向导中打开文档

时间:2015-08-21 08:07:29

标签: inno-setup pascalscript

我的问题是,当你点击标签文件(rtf)并打开说明时,我想制作一个"超链接"(我知道现在有这样的东西在inno中)。

  

问题:我不想将此程序与设置一起复制,   它应该在设置内部,安装后不再存在   需要,因此应删除或抛弃。

无法使用{tmp}文件夹,因为它只在[run]阶段加入(如果我没有记错的话就是安装),我之前需要它。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

[Run]部分未明确保留临时文件夹。它可以在需要时使用(它被广泛用于例如DLL库)。据我所知,在Inno Setup中没有超链接标签这样的东西。我已将{{3>} link lable 并将其扩展为打开从安装档案中提取的文件到临时文件夹(安装程序终止时删除的文件夹) :

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

[Files]
; the dontcopy flag tells the installer that this file is not going to be copied to
; the target system
Source: "File.txt"; Flags: dontcopy

[Code]
var
  LinkLabel: TLabel;

procedure LinkLabelClick(Sender: TObject);
var
  FileName: string;
  ErrorCode: Integer;
begin
  FileName := ExpandConstant('{tmp}\File.txt');
  // if the file was not yet extracted into the temporary folder, do it now
  if not FileExists(FileName) then
    ExtractTemporaryFile('File.txt');
  // open the file from the temporary folder; if that fails, show the error message
  if not ShellExec('', FileName, '', '', SW_SHOW, ewNoWait, ErrorCode) then
    MsgBox(Format('File could not be opened. Code: %d', [ErrorCode]), mbError, MB_OK);
end;

procedure InitializeWizard;
begin
  LinkLabel := TLabel.Create(WizardForm);
  LinkLabel.Parent := WizardForm;
  LinkLabel.Left := 8;
  LinkLabel.Top := WizardForm.ClientHeight - LinkLabel.ClientHeight - 8;
  LinkLabel.Cursor := crHand;
  LinkLabel.Font.Color := clBlue;
  LinkLabel.Font.Style := [fsUnderline];
  LinkLabel.Caption := 'Click me to read something important!';
  LinkLabel.OnClick := @LinkLabelClick;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  LinkLabel.Visible := CurPageID <> wpLicense;
end;