3

我为 inDesign 制作了几个脚本。现在我想将它们全部分发到一个安装文件中。由于 inDesign 脚本驻留在 XP 和 Vista(或更高版本)上的不同位置,我遇到了一些问题。我编译的设置在 Windows XP 下运行良好,但不会将任何内容复制到 Windows 7AppData文件夹。当我将文件夹从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;
4

2 回答 2

6

{userappdata}常量C:\Users\username\AppData\Roaming在 Windows Vista 上解析为更新版本。

所以{userappdata}\Roaming解决C:\Users\username\AppData\Roaming\Roaming,什么是(可能)不是你想要的。

在 Windows XP 上,{userappdata}解析为C:\Documents and Settings\username\Application Data(no Roaming)。

因此,我相信您可以{userappdata}在包括 XP 在内的所有 Windows 版本上使用并获得所需的结果。您不需要那些带有IsWindowsXP和的条件条目IsWindowsVista_or_7

换句话说,我相信Windows XP 和 Windows 7 上的安装路径是相同SHGetFolderPath(CSIDL_APPDATA)的。在这两种情况下,它都{userappdata}在 Inno Setup 中。

[Files]
Source: "Akruti Converter.jsx"; \
    DestDir: "{userappdata}\Adobe\InDesign\Version 8.0\en_US\Scripts\Scripts Panel\Unicode Converters\Plain"

旁注:您IsWindowsVista_or_7仅作为“IsWindows7”实现。它不会在 Windows Vista 上返回 true。它也应该在 Windows 8/10 上返回 true。

于 2015-12-27T15:57:13.153 回答
1

如果您只是为了分发,您可以考虑使用 Adob​​e AddOns,它将处理所有与平台相关的安装技术方面。

于 2015-12-28T23:21:10.713 回答