gpt4 book ai didi

installation - 创新设置 : Disable components page on upgrade

转载 作者:行者123 更新时间:2023-12-03 13:48:52 24 4
gpt4 key购买 nike

有没有办法禁用升级的组件页面?我想启用我的软件升级,但我不想让用户在升级时更改组件的选择。
而是安装程序从第一次安装升级所有现有组件。

我担心用户在升级过程中选择的组件较少​​,这些缺失的组件将保持安装为旧版本,并且您会变得一团糟。

我在脚本中添加了以下内容:

[Setup]
DisableDirPage=auto
DisableProgramGroupPage=auto
DirExistsWarning=auto

我只需要一种方法来禁用组件页面并使用先前安装(完全安装)的选择进行升级。那可能吗?

我找到了一个相关的指令:
[Setup]
UsePreviousTasks=true
UsePreviousTasks正在从注册表中读取现有部分,这很好。现在我需要找到一种隐藏选择窗口的方法。

谢谢,
沃尔夫冈

最佳答案

要对用户隐藏页面,请使用 ShouldSkipPage 事件方法。如果您在此方法中返回 True,则该页面将不会显示给用户。如果为 False,页面将照常显示。以下是如何检查安装是否为升级的示例,如果是,请跳过“选择组件”向导页面:

[Setup]
AppId=B75E4823-1BC9-4AC6-A645-94027A16F5A5
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

; here is the place for your [Components] section and the rest of your script

[Code]
const
UninstallKey = 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppId")}_is1';

function IsUpgrade: Boolean;
var
Value: string;
begin
Result := (RegQueryStringValue(HKLM, UninstallKey, 'UninstallString', Value) or
RegQueryStringValue(HKCU, UninstallKey, 'UninstallString', Value)) and (Value <> '');
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := (PageID = wpSelectComponents) and IsUpgrade;
end;

您提到的另一个选项可能是禁用页面的所有控件。下一个脚本与上一个脚本一样显示如何检查安装是否为升级,如果是,则禁用“选择组件”向导页面上的所有控件:
[Setup]
AppId=B75E4823-1BC9-4AC6-A645-94027A16F5A5
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

; here is the place for your [Components] section and the rest of your script

[Code]
const
UninstallKey = 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppId")}_is1';

function IsUpgrade: Boolean;
var
Value: string;
begin
Result := (RegQueryStringValue(HKLM, UninstallKey, 'UninstallString', Value) or
RegQueryStringValue(HKCU, UninstallKey, 'UninstallString', Value)) and (Value <> '');
end;

procedure DisablePageControls(Page: TNewNotebookPage);
var
I: Integer;
begin
Page.Enabled := False;
for I := 0 to Page.ControlCount - 1 do
Page.Controls[I].Enabled := False;
end;

procedure InitializeWizard;
begin
if IsUpgrade then
DisablePageControls(WizardForm.SelectComponentsPage);
end;

关于installation - 创新设置 : Disable components page on upgrade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com