Inno Setup 安装到 AppData\Roaming Windows Vista/7 及更高版本,但应用程序数据安装在 Windows XP
Inno Setup Installing to AppData\Roaming on Windows Vista/7 and newer, but Application Data on Windows XP
我为 inDesign 制作了几个脚本。现在我想将它们全部分发到一个安装文件中。由于 inDesign 脚本驻留在 XP 和 Vista(或更高版本)的不同位置,我遇到了一些问题。我编译的设置在 Windows XP 下工作正常,但不会将任何内容复制到 Windows 7 AppData
文件夹。当我将文件夹从 AppData
更改为绝对路径时,它起作用了。
[Files]
Source: "Akruti Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsVista_or_7
Source: "Akruti Converter.jsx"; DestDir: "C:\Unicode Converters\Plain"
Source: "ShreeLipi v4,5,6 Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsVista_or_7
Source: "Smart Akruti Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Smart"; Check: IsWindowsVista_or_7
Source: "Akruti Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsXP
Source: "ShreeLipi v4,5,6 Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsXP
Source: "Smart Akruti Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Smart"; Check: IsWindowsXP
[Code]
function IsWindowsXP: Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result := Version.NTPlatform and (Version.Major = 5) and (Version.Minor = 1);
end;
function IsWindowsVista_or_7: Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result := Version.NTPlatform and (Version.Major = 6) and ((Version.Minor = 1));
end;
The {userappdata}
constant 在更新的 Windows Vista 上解析为 C:\Users\username\AppData\Roaming
。
因此 {userappdata}\Roaming
解析为 C:\Users\username\AppData\Roaming\Roaming
,这(可能)不是您想要的。
在 Windows XP 上,{userappdata}
解析为 C:\Documents and Settings\username\Application Data
(没有 Roaming
)。
因此,我相信您可以在所有版本的 Windows 上使用 {userappdata}
,包括 XP,并获得预期的结果。您不需要带有 IsWindowsXP
和 IsWindowsVista_or_7
.
的条件条目
换句话说,我认为安装路径与 Windows XP 和 Windows 7 上的 相同。在这两种情况下,它都在 SHGetFolderPath(CSIDL_APPDATA)
Inno Setup 中的 {userappdata}
是什么。
[Files]
Source: "Akruti Converter.jsx"; \
DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"
旁注:您的 IsWindowsVista_or_7
仅实现为 "IsWindows7"。它不会 return 在 Windows Vista 上是正确的。它也应该 return 在 Windows 8/10 上为真。
如果您只参与分发,您可以考虑使用 Adobe AddOns 处理所有与平台相关的安装技术问题。
我为 inDesign 制作了几个脚本。现在我想将它们全部分发到一个安装文件中。由于 inDesign 脚本驻留在 XP 和 Vista(或更高版本)的不同位置,我遇到了一些问题。我编译的设置在 Windows XP 下工作正常,但不会将任何内容复制到 Windows 7 AppData
文件夹。当我将文件夹从 AppData
更改为绝对路径时,它起作用了。
[Files]
Source: "Akruti Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsVista_or_7
Source: "Akruti Converter.jsx"; DestDir: "C:\Unicode Converters\Plain"
Source: "ShreeLipi v4,5,6 Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsVista_or_7
Source: "Smart Akruti Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Smart"; Check: IsWindowsVista_or_7
Source: "Akruti Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsXP
Source: "ShreeLipi v4,5,6 Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"; Check: IsWindowsXP
Source: "Smart Akruti Converter.jsx"; DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Smart"; Check: IsWindowsXP
[Code]
function IsWindowsXP: Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result := Version.NTPlatform and (Version.Major = 5) and (Version.Minor = 1);
end;
function IsWindowsVista_or_7: Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result := Version.NTPlatform and (Version.Major = 6) and ((Version.Minor = 1));
end;
The {userappdata}
constant 在更新的 Windows Vista 上解析为 C:\Users\username\AppData\Roaming
。
因此 {userappdata}\Roaming
解析为 C:\Users\username\AppData\Roaming\Roaming
,这(可能)不是您想要的。
在 Windows XP 上,{userappdata}
解析为 C:\Documents and Settings\username\Application Data
(没有 Roaming
)。
因此,我相信您可以在所有版本的 Windows 上使用 {userappdata}
,包括 XP,并获得预期的结果。您不需要带有 IsWindowsXP
和 IsWindowsVista_or_7
.
换句话说,我认为安装路径与 Windows XP 和 Windows 7 上的 相同。在这两种情况下,它都在 SHGetFolderPath(CSIDL_APPDATA)
Inno Setup 中的 {userappdata}
是什么。
[Files]
Source: "Akruti Converter.jsx"; \
DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"
旁注:您的 IsWindowsVista_or_7
仅实现为 "IsWindows7"。它不会 return 在 Windows Vista 上是正确的。它也应该 return 在 Windows 8/10 上为真。
如果您只参与分发,您可以考虑使用 Adobe AddOns 处理所有与平台相关的安装技术问题。