Wol*_*Reh 4 installer inno-setup
有没有办法禁用升级的组件页面?我想启用我的软件升级,但我不想让用户在升级的情况下更改组件的选择.而是从第一次安装升级所有现有组件的安装程序.
我担心用户在升级期间选择较少的组件,那些丢失的组件将作为旧版本保持安装并且你弄得一团糟.
我在脚本中添加了以下内容:
[Setup]
DisableDirPage=auto
DisableProgramGroupPage=auto
DirExistsWarning=auto
Run Code Online (Sandbox Code Playgroud)
我只需要一种方法来禁用组件页面并使用先前安装(完全安装)的选择进行升级.那可能吗?
更新
[Setup]
UsePreviousTasks=true
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
您提到的另一个选项可能是禁用页面的所有控件.下一个脚本显示为上一个脚本如何检查安装是否为升级,如果是,则禁用"选择组件"向导页面上的所有控件:
[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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |