标签: pascalscript

Inno Setup脚本中的基本IP验证

当我收集用户的输入时,如何检查它是否是IP地址?

windows inno-setup ip-address pascalscript

2
推荐指数
1
解决办法
1916
查看次数

如何使用Inno pascal脚本检索计算机名称?

我的inno pascal脚本遇到了一些困难.我用Pascal熟悉了一下(稍微有点),但现在我觉得pascal 脚本可能会有很大不同.

以下代码使用freepascal编译得很好:

program test;

uses windows;

function GetPCName: string;
var
  buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
  Size: Cardinal;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  Windows.GetComputerName(@buffer, Size);
  Result := StrPas(buffer);
end;

begin
   writeln('ComputerName: ' + (GetPCName));
   readln;
end.
Run Code Online (Sandbox Code Playgroud)

我怎么能在我的inno [code]部分做这样的事情?我尝试了上面的内容,但似乎并不喜欢"使用Windows";

inno-setup pascalscript

2
推荐指数
1
解决办法
1852
查看次数

在 Inno Setup 中将输入的文本保存到 TXT 文件

我必须将用户键入的用户名和密码保存到文本文件中,但它会在用户键入之前创建文本文件并保存文本。(因此创建了空文本文件)。

我想我必须对程序做一些事情,但是虽然我搜索了解决方案,但我找不到。

我的代码:

[Code]
var
  Page: TInputQueryWizardPage;
  username: String;
  password: String;

procedure InitializeWizard;
begin
  { Create the page }
  Page := CreateInputQueryPage(wpWelcome,
    'Username & Password', 'Username like : e201600',
    'Please enter your username and password.');
  { Add items (False means it's not a password edit) }
  Page.Add('Username:', False);
  Page.Add('Password:', True);
  { Set initial values (optional) }
  Page.Values[0] := ExpandConstant('hello5');
  Page.Values[1] := ExpandConstant('');
  { Read values into variables }
  username := Page.Values[0];
  password := Page.Values[1];
  SaveStringToFile('c:\filename.txt', username+#13#10+password+#13#10, False);
end;
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

2
推荐指数
1
解决办法
1890
查看次数

在 Inno Setup 中使用字体大小缩放单选按钮列表

当尝试使用单选按钮应用自定义安装掩码时(我使用了通过单选按钮替换安装类型下拉列表中提供的代码)我看到我无法使用更高的字体,因为一个单选按钮字段和另一个单选按钮字段之间应该需要一点间距. 给你一个直观的例子:

在此处输入图片说明

由于默认字体大小不太容易阅读,我想知道是否有一种方法可以在一个单选按钮字段和下一个单选按钮字段之间添加额外的间距。

inno-setup pascalscript

2
推荐指数
1
解决办法
614
查看次数

将 Inno Setup 子组件显示为同级组件,并在复选框中显示检查而不是方形

我正在尝试将一个子组件显示为兄弟组件。我正在为游戏制作一个安装程序,该游戏可以在同一安装文件夹中共存多个版本的游戏。

现在我希望能够安装可选的模组,这些模组需要安装特定版本的游戏(依赖项)。因此,当用户单击某个模组时,就会选择所需的游戏,如果取消选择该游戏,则所有模组都会被取消选择。代码按预期工作并且行为如前所述。有时它会让用户感到有点困惑。例如,如果没有安装 mod,则游戏中会显示一个正方形而不是检查,并且 mod 的层次结构是不必要的。

我想要实现的目标:

  1. 我想必须game_2显示支票而不是方块
  2. 作为game_2\com_mods兄弟姐妹game_2而不是孩子。

据我所知,我想没有简单的方法可以达到这种效果。如果我没有错误地使用该[Code]部分,则可以修改 UI,但我不知道如何强制使用复选框而不是正方形并删除子项的填充。

这是我的示例代码:

[Setup]
AppName=Demo
AppVersion=1.0
DefaultDirName=.

[Components]
Name: "game_1";    Description: "Game v1";  Types: full custom; Flags: checkablealone
Name: "game_2";    Description: "Game v2";  Types: full custom; Flags: checkablealone
Name: "game_2\com_mods";    Description: "Game Community Mods"; Types: full custom;  Flags: dontinheritcheck
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 1"; Flags: exclusive
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 2"; Flags: exclusive
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 3"; Flags: exclusive …
Run Code Online (Sandbox Code Playgroud)

checkbox inno-setup hierarchy pascalscript

2
推荐指数
1
解决办法
749
查看次数

如何更改 Inno Setup 中进度条的颜色?

我使用创建进度条TNewProgressBar
进度条的默认颜色是绿色。
我想将颜色更改为蓝色。

inno-setup pascalscript

2
推荐指数
1
解决办法
1379
查看次数

Inno Setup从.NET Framework 4.5(或更高版本)安装程序获取进度以更新进度条位置

我目前正在安装.NET Framework 4.6.2作为PrepareToInstall事件功能的先决条件,以便我可以获取退出代码,设置NeedsReboot状态或在安装失败时中止.我的代码在下面,这一切都正常.

var
  PrepareToInstallLabel: TNewStaticText;
  PrepareToInstallProgressBar: TNewProgressBar;
  intDotNetResultCode: Integer;
  CancelWithoutPrompt, AbortInstall: Boolean;

function InitializeSetup(): Boolean;
begin
  Result := True;
  OverwriteDB := False;
  CancelWithoutPrompt := False;
  AbortInstall := False;
end;

function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  intResultCode: Integer;
  strInstallType: String;
begin
  if not IsDotNet45Installed and IsWindows7Sp1OrAbove then
    begin
      HidePrepareToInstallGuiControls;
      PrepareToInstallLabel.Caption := 'Installing Microsoft .NET Framework 4.6.2...';
      ShowPrepareToInstallGuiControls;
      ExtractTemporaryFile('NDP462-KB3151800-x86-x64-AllOS-ENU.exe');
      if WizardSilent = True then
        begin
          strInstallType := '/q';
        end
      else
        begin
          strInstallType := '/passive';
        end;
      Exec(ExpandConstant('{tmp}\NDP462-KB3151800-x86-x64-AllOS-ENU.exe'), strInstallType …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

2
推荐指数
1
解决办法
1324
查看次数

如何在 Inno Setup 中延迟而不冻结

您好,我想知道如何在 Inno Setup Pascal Script 中将工作(或命令)延迟指定的时间。

内置功能会在Sleep(const Milliseconds: LongInt)睡觉时冻结所有工作。

我实现的以下功能也使WizardForm无响应但不像内置Sleep()功能那样冻结。

procedure SleepEx(const MilliSeconds: LongInt);
begin
  ShellExec('Open', 'Timeout.exe', '/T ' + IntToStr(MilliSeconds div 1000), '', SW_HIDE,
            ewWaitUntilTerminated, ErrorCode);
end;
Run Code Online (Sandbox Code Playgroud)

我也读过这个,但想不出如何在我的函数中使用它。

我想知道如何WaitForSingleObject在此SleepEx功能中使用。

在此先感谢您的帮助。

sleep inno-setup pascalscript

2
推荐指数
1
解决办法
3743
查看次数

如何调用外部 iss 脚本并使用代码部分下主 Inno Setup 脚本中的函数?

我有一个 Inno Setup 脚本,其中包含一些基本内容的代码部分。但我还有另一个专门处理 Windows 服务的 Inno Setup 脚本文件 (.iss)。我想直接从我的主脚本调用这些函数/过程。那么如何将#include文件services.iss放入我的主脚本中,以便我可以从该Code部分调用其函数?

我在网上看到了一些示例,说明如何使用此方法拆分文件部分,这很棒,但我希望能够在安装之间使用通用代码脚本拆分代码部分。我到处都能找到它的提及,但没有任何地方告诉你如何做到这一点。

inno-setup pascalscript

2
推荐指数
1
解决办法
1359
查看次数

Inno Setup 在输入无效时禁用 Next 按钮

当输入不是“管理员”时,我需要禁用下一步按钮。

就像是:

procedure EditKeyPress(Sender: TObject; var Key: Char);
begin
  { enable the next button if the value in the box is admin; disable otherwise }
  WizardForm.NextButton.Enabled:=InputPage6.values[EditIndex2]??.Text = 'Admin'
end; 
Run Code Online (Sandbox Code Playgroud)

installation inno-setup pascalscript

2
推荐指数
1
解决办法
1645
查看次数