当我收集用户的输入时,如何检查它是否是IP地址?
我的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";
我必须将用户键入的用户名和密码保存到文本文件中,但它会在用户键入之前创建文本文件并保存文本。(因此创建了空文本文件)。
我想我必须对程序做一些事情,但是虽然我搜索了解决方案,但我找不到。
我的代码:
[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) 当尝试使用单选按钮应用自定义安装掩码时(我使用了通过单选按钮替换安装类型下拉列表中提供的代码)我看到我无法使用更高的字体,因为一个单选按钮字段和另一个单选按钮字段之间应该需要一点间距. 给你一个直观的例子:

由于默认字体大小不太容易阅读,我想知道是否有一种方法可以在一个单选按钮字段和下一个单选按钮字段之间添加额外的间距。
我正在尝试将一个子组件显示为兄弟组件。我正在为游戏制作一个安装程序,该游戏可以在同一安装文件夹中共存多个版本的游戏。
现在我希望能够安装可选的模组,这些模组需要安装特定版本的游戏(依赖项)。因此,当用户单击某个模组时,就会选择所需的游戏,如果取消选择该游戏,则所有模组都会被取消选择。代码按预期工作并且行为如前所述。有时它会让用户感到有点困惑。例如,如果没有安装 mod,则游戏中会显示一个正方形而不是检查,并且 mod 的层次结构是不必要的。
我想要实现的目标:
game_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) 我使用创建进度条TNewProgressBar。
进度条的默认颜色是绿色。
我想将颜色更改为蓝色。
我目前正在安装.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 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功能中使用。
在此先感谢您的帮助。
我有一个 Inno Setup 脚本,其中包含一些基本内容的代码部分。但我还有另一个专门处理 Windows 服务的 Inno Setup 脚本文件 (.iss)。我想直接从我的主脚本调用这些函数/过程。那么如何将#include文件services.iss放入我的主脚本中,以便我可以从该Code部分调用其函数?
我在网上看到了一些示例,说明如何使用此方法拆分文件部分,这很棒,但我希望能够在安装之间使用通用代码脚本拆分代码部分。我到处都能找到它的提及,但没有任何地方告诉你如何做到这一点。
当输入不是“管理员”时,我需要禁用下一步按钮。
就像是:
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) inno-setup ×10
pascalscript ×10
checkbox ×1
hierarchy ×1
installation ×1
ip-address ×1
sleep ×1
windows ×1