gpt4 book ai didi

inno-setup - 在 Inno Setup 中为不同版本的 Windows 创建图标并运行不同的程序

转载 作者:行者123 更新时间:2023-12-04 14:57:50 25 4
gpt4 key购买 nike

我想在 [Icons][Run] 部分的安装过程中使用代码变量来做出决定,但我不知道我是否错了还是不是。

我的[代码]部分是:

[Code]
var
myW7Val: string;

function GetMyW7Val(Value: string): string;
begin
Result := myW7Val;
end;

function IsWindowsVersionOrNewer(Major, Minor: Integer): Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result :=
(Version.Major > Major) or
((Version.Major = Major) and (Version.Minor >= Minor));
end;

function IsWindows8OrNewer: Boolean;
begin
Result := IsWindowsVersionOrNewer(6, 2);
if not Result then
myW7Val := '1';
myW7Val := '0';
end;

function InitializeSetup: Boolean;
begin
IsWindows8OrNewer
Result := True;
end;

我的[图标]部分是:

[Icons]
#if "{code:GetMyW7Val}" == '0'
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; \
Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; \
Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
#elif "{code:GetMyW7Val}" == '1'
Name: "{autoprograms}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"
Name: "{autodesktop}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: quicklaunchicon
#endif

如果 myW7Val0 我想使用前三个条目,如果 myW7Val1 我想使用其他条目> 。但目前我有一个错误,没有值(value)观。

你有什么想法吗?

提前致谢

最佳答案

要回答您的字面问题,请使用 Check parameter :

[Code]
function IsWindows8OrNewer: Boolean;
begin
Result := IsWindowsVersionOrNewer(6, 2);
end;
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; \
Check: not IsWindows8OrNewer
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; \
Tasks: desktopicon; Check: not IsWindows8OrNewer
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; \
Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon; \
Check: not IsWindows8OrNewer

Name: "{autoprograms}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Check: IsWindows8OrNewer
Name: "{autodesktop}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: desktopicon; \
Check: IsWindows8OrNewer
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: quicklaunchicon; \
Check: IsWindows8OrNewer

虽然这有点矫枉过正,但还是有 MinVersion and OnlyBelowVersion parameters为特定 Windows 版本选择条目:

[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; \
OnlyBelowVersion: 6.2
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; \
Tasks: desktopicon; OnlyBelowVersion: 6.2
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; \
Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon; \
OnlyBelowVersion: 6.2

Name: "{autoprograms}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; MinVersion: 6.2
Name: "{autodesktop}\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: desktopicon; \
MinVersion: 6.2
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppLanceurName}"; \
Filename: "{app}\{#MyAppLanceurExeName}"; Tasks: quicklaunchicon; MinVersion: 6.2

或者,您可以使用 scripted constant选择应用程序名称和文件名,以避免重复 Icons 条目:

[Code]
function IsWindows8OrNewer: Boolean;
begin
Result := IsWindowsVersionOrNewer(6, 2);
end;

function GetAppName(Param: string): string;
begin
if IsWindows8OrNewer then Result := '{#MyAppLanceurName}'
else Result := '{#MyAppName}';
end;

function GetAppExeName(Param: string): string;
begin
if IsWindows8OrNewer then Result := '{#MyAppLanceurExeName}'
else Result := '{#MyAppExeName}';
end;
[Icons]
Name: "{autoprograms}\{code:GetAppName}"; Filename: "{app}\{code:GetAppExeName}"
Name: "{autodesktop}\{code:GetAppName}"; Filename: "{app}\{code:GetAppExeName}"; \
Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{code:GetAppName}"; \
Filename: "{app}\{code:GetAppExeName}"; Tasks: quicklaunchicon

关于inno-setup - 在 Inno Setup 中为不同版本的 Windows 创建图标并运行不同的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67594428/

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