标签: pascalscript

Inno-setup:基于现有页面类型的自定义向导页面

我决定在基于inno-setup的安装程序中创建自定义向导页面.但我不想从头开始创建它.我想采取TInputDirWizardPage并修改它,例如添加一个组合框.可能吗?怎么做?

installer inno-setup wizard pascalscript

6
推荐指数
1
解决办法
4093
查看次数

如何将字符串从DLL返回到Inno Setup?

我需要将一个字符串值返回给调用inno安装脚本.问题是我找不到管理分配内存的方法.如果我在DLL端分配,我没有任何东西可以在脚本端解除分配.我不能使用输出参数,因为Pascal脚本中也没有分配函数.我该怎么办?

c++ dll inno-setup pascalscript

6
推荐指数
1
解决办法
4259
查看次数

如何让Inno Setup检查文件是否不存在

当我编译下面的Inno Setup脚本时,它给了我一个错误(下面).我从这里借了代码,所以我不确定为什么它不能正常工作.

Line 136:
Column 10:
Invalid prototype for 'FileDoesNotExist'
Run Code Online (Sandbox Code Playgroud)

第136行是 function FileDoesNotExist(file: string): Boolean;

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters: "msstdfmt.dll"; WorkingDir: {app}\Pronto\Programs\; BeforeInstall: FileDoesNotExist(ExpandConstant('{sys}\msstdfmt.dll')); StatusMsg: "Registering Controls..."

[Code]
function FileDoesNotExist(file: string): Boolean;
begin
  if (FileExists(file)) then
    begin
      Result := False;
    end
  else
    begin
      Result := True;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

6
推荐指数
1
解决办法
5732
查看次数

使用Inno Setup替换文件中的文本

您好我用Inno Setup(基于Delphi)替换文本文件中的文本有问题.

我的代码:

procedure  FileReplaceString(const  FileName,  searchstring,  replacestring:  string);
var
    fs:  TFileStream;
    S:  string;
begin
    fs  :=  TFileStream.Create(FileName,  fmOpenread  or  fmShareDenyNone);
    try
        SetLength(S,  fs.Size);
        fs.ReadBuffer(S[1],  fs.Size);
    finally
        fs.Free;
    end;
    { the compiler stops here with: unknown identifier 'StringReplace' }
    S := StringReplace(S,  SearchString,  replaceString,  [rfReplaceAll,  rfIgnoreCase]); 
    fs  :=  TFileStream.Create(FileName,  fmCreate);
    try
        fs.WriteBuffer(S[1],  Length(S));
    finally
        fs.Free;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

我发现我必须使用StringChange(),但我不知道如何在我的代码中使用它.我不太了解Delphi或Inno Setup.我希望你能帮助我.

inno-setup pascalscript

6
推荐指数
1
解决办法
8383
查看次数

Inno Setup为每个文件调用AfterInstall函数

我想在安装文件夹后调用一个函数,但是InstallEnv函数似乎被调用了好几次,也许每个文件都是文件夹(待确认).有没有办法在安装所有这些文件后只调用一次?我不能使用该Run部分,因为我想要使用返回代码进行错误捕获.

Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}/virtualenv"; \
    Flags: recursesubdirs; AfterInstall: InstallEnv; 
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

6
推荐指数
2
解决办法
3488
查看次数

在Inno Setup的文本框中需要一个数字

我在这里找到了一个我需要的代码.仅允许在文本框中写入数字.但我仍然想要更多,没有提供"下一步"按钮而没有在此文本框中写入数字.

可以帮我?

procedure NumbersOnly(Sender: TObject; var Key: Char);
var
  S: string;
begin
  S := ('1234567890'#8);
  if Pos(Key, S) = 0 then 
    Key := #0;
end;
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

6
推荐指数
2
解决办法
2768
查看次数

Inno Setup:在Code部分中递归复制文件夹,子文件夹和文件

有没有办法在代码部分中浏览和递归复制/移动目录的所有文件和子目录?(PrepareToInstall)

我需要忽略一个特定的目录,但是使用xcopy它会忽略所有目录/default/,例如,我只需要忽略一个特定的目录.

Files部分在需要时稍后执行.

inno-setup pascalscript

6
推荐指数
1
解决办法
6470
查看次数

在Inno Setup中实现脚本常量时,"标识符预期"或"无效原型"

因此,给定此功能,我GetRoot := ROOTPage.Values[0];在行上收到错误"Identifier Expected" .我希望它告诉我ROOTPage没有定义?

const
  DefaultRoot = 'C:\IAmGRoot';
Var
  ROOTPage : TInputQueryWizardPage;

procedure SetupRoot;
begin
  ROOTPage := CreateInputQueryPage(wpUserInfo,
    ExpandConstant('{cm:RootTitle}'), 
    ExpandConstant('{cm:RootInstructions}'),
    ExpandConstant('{cm:RootDescription}') + ' "' + DefaultRoot + '"'
    );

  ROOTPage.Add(ExpandConstant('{cm:SSRoot}') + ':', False);
  ROOTPage.Values[0] := ExpandConstant('{DefaultRoot}');

  // add SSROOT to path
end;

function GetRoot : string;
begin
  GetRoot := ROOTPage.Values[0];
end;
Run Code Online (Sandbox Code Playgroud)

我该如何解释这个错误.Pascal中的标识符是什么?

这个页面告诉我标识符是变量名.也许我需要以ROOTPage.Values[0]某种方式扩展它,因为我从Inno Setup对象引用一个数组?

或许我需要以不同的方式返回值.我在Pascal上看到一个页面表示你需要避免在参数较少的函数上分配函数值以避免递归循环.这是否意味着我应该传递一个虚拟值?还是有不同的语法?该页面没有解释.

我暗自认为我的真正问题是我没有正确定义我的功能......但是很好.这至少可以编译.这个问题可能变成:你如何在Pascal中处理无参数函数?

我不认为Inno Setup是问题的一部分,但我正在与Inno Setup合作以防万一.

更新: 它似乎不是数组,因为它得到相同的错误:

const
  DefaultRoot = 'C:\IAmGRoot';

function GetRoot : …
Run Code Online (Sandbox Code Playgroud)

syntax inno-setup function pascalscript

6
推荐指数
1
解决办法
3107
查看次数

如何在 Inno Setup 中检查端口是否可用?

我需要检查一些端口是否可用?如何在 Inno Setup 中做到这一点?有没有办法在 Inno Setup 中使用套接字?有没有这方面的图书馆?如果有如何导入并使用它?

谢谢您的回答。

inno-setup pascalscript

5
推荐指数
1
解决办法
1776
查看次数

Inno Setup 中自定义页面的顺序

我正在使用 Inno Setup。我想要两个自定义页面,例如:

var
 PasswordEdit: TPasswordEdit;
 UserEdit: TEdit;
 Page: TWizardPage;
 Page2: TWizardPage;
...
 Page := CreateCustomPage(wpWelcome, 'Page1', '');
 Page2 := CreateCustomPage(wpWelcome, 'Page2', '');
Run Code Online (Sandbox Code Playgroud)

而是Page2出现在面前Page。这是创建更多自定义页面的正确方法吗?

inno-setup pascalscript

5
推荐指数
1
解决办法
501
查看次数

标签 统计

inno-setup ×10

pascalscript ×10

c++ ×1

dll ×1

function ×1

installer ×1

syntax ×1

wizard ×1