小编Rob*_*ley的帖子

VBScript使用Windows Visual Styles

是否可以告诉VBScript使用Windows视觉样式,以便任何表单组件使用Windows主题而不是经典组件?例如,要使MsgBox显示样式按钮而不是经典3D凸起方形按钮.

这个:

在此输入图像描述

与此相反:

在此输入图像描述

vbscript

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

Inno Setup 相对于现有按钮定位自定义按​​钮

我知道可以使用以下代码在任何页面上创建自定义按钮并使用绝对值定位它:

//Create the About button
  AboutButton := TButton.Create(WizardForm);
  AboutButton.Caption := '&About';
  AboutButton.Width := ScaleX(75);
  AboutButton.Height := ScaleY(23);
  AboutButton.Left := WizardForm.InfoAfterPage.Left + 10;
  AboutButton.Top := WizardForm.InfoAfterPage.Height + 90;
  AboutButton.OnClick := @AboutButtonClick;
  AboutButton.Parent := WizardForm.NextButton.Parent;
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,由于它使用绝对值进行定位,如果用户打开了 Windows 缩放(在屏幕分辨率 > 放大或缩小文本和其他项目下)并且缩放设置为中 125%,则按钮会出现与其他内置按钮不对齐,导致一团糟。因此,有没有一种方法可以将任何新创建的自定义按钮与内置按钮相关联,以便它们始终按预期显示在一行中?或者有没有其他解决方案可以解决我忽略的这种扩展困境?

inno-setup

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

Inno Setup查询Windows服务状态

我试图找到一种查询Windows服务状态的方法,即它是运行,停止还是禁用.我知道我可以使用sc.exe query ServiceName,但这将涉及使用批处理文件来查找输出中的状态,管道到文件然后读取它,这似乎有点复杂.我在MSDN上找到了以下Windows API函数,我相信它可能会做我想要的,但我不知道如何或是否可以将其合并到Inno Setup中.或者,是否有另一种方法可用于使用Inno Setup本机返回Windows服务的状态?

inno-setup

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

在 Inno Setup 安装程序中指定日志名称

设置SetupLogging=yes创建一个文件:

%TEMP%\安装日志 YYYY-MM-DD #NNN.txt

有什么办法可以指定文件名吗?请注意,我知道我可以FileCopy在安装结束时使用它重命名(How can I log Inno Setup Installations?),但我只想在开始时指定文件的名称,就像使用 switch 可以完成的那样/log=%TEMP%\ProductInstall.log。这可能吗?

inno-setup

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

Inno设置MsgBox有三个按钮和三个结果

我正在尝试MsgBox使用三个按钮和三个结果创建一个,但我无法看到如何创建第三个结果?我目前有两个按钮的代码MsgBox,它完美地工作:

if ((strExistingInstallPath <> '') and (strExistingVersion = '2.5.3')) then
begin
  if SuppressibleMsgBox('Setup has detected that ' + strMyAppName + ' ' + strExistingVersion + '.' + strExistingBuild + ' is installed.' + #13#10 + #13#10 +
    'The existing version must be removed before installing or upgrading to ' + strMyAppVersion + '.' + strMyAppBuild + '.' + #13#10 + #13#10 +
    'Would you like Setup to uninstall the existing version?',
    mbConfirmation, MB_YESNO, IDYES) = IDYES …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

4
推荐指数
1
解决办法
2683
查看次数

Inno Setup 内置控件名称

我经常发现我需要内置控件的名称,例如WizardForm.StatusLabel。某处是否有对所有内置控件名称的明确引用,如果没有,您如何找到这些?WizardForm.InstallingPage作为一个有效的示例,我如何找到显示在ie 下面的标签上提取的文件名的控件的名称WizardForm.StatusLabel

inno-setup

4
推荐指数
1
解决办法
548
查看次数

从 A 到 Z 的 Inno Setup 循环

我正在尝试编写一个函数,该函数将依次检查每个驱动器上是否存在特定目录,将找到它的路径存储为变量,如果存在则返回 true,否则返回 false:

function IsDirPresent(): Boolean;
var
  chrDriveLetter: Char;
  strMyDir: String;
begin
  for chrDriveLetter := 'A' to 'Z' do
    begin
      if DirExists(chrDriveLetter + ':\MyDir') then
        strMyDirPath := chrDriveLetter + ':\MyDir'
    end;
  if strMyDirPath <> '' then
    Result := True;
end;
Run Code Online (Sandbox Code Playgroud)

编译时,我的循环行出现类型不匹配错误。我正在努力找出循环出了什么问题,并且无法找到有关如何在 Inno Setup 中正确创建从 A 到 Z 的循环的任何信息。

inno-setup

3
推荐指数
1
解决办法
2823
查看次数

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以32位模式安装到SysWOW64

我正在创建一个仅需要安装32位文件的安装程序,它们可以在64位和32位计算机上工作。

我在64位计算机上运行Inno安装程序,即使安装模式为32位,文件仍最终位于该SysWOW64文件夹中。该Dest指令集来{sys}

Source: "C:\Users\Lablabla\Documents\Visual Studio 2013\Projects\Test\MyDll.dll"; DestDir: "{sys}"; Flags: 32bit
Run Code Online (Sandbox Code Playgroud)

奇怪的是,日志显示目标为system32,安装模式为32位

2015-04-12 01:04:14.046   64-bit Windows: Yes
2015-04-12 01:04:14.046   Processor architecture: x64
2015-04-12 01:04:14.046   User privileges: Administrative
2015-04-12 01:04:14.046   64-bit install mode: No
....
2015-04-12 01:04:20.237   Dest filename: C:\Windows\system32\MyDll.dll
Run Code Online (Sandbox Code Playgroud)

但是,完成安装后SysWOW64,即使可执行文件位于正确的位置,该文件也位于文件夹中。Program Files (x86)

即使将特定32bit标志设置为dll文件,也会发生这种情况。

安装非常简单,只有这个dll和一个可执行文件。没有注册表或其他更复杂的东西。

任何人都经历过这样的事情吗?

谢谢

windows inno-setup

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

标签 统计

inno-setup ×8

pascalscript ×2

vbscript ×1

windows ×1