Inno安装程序在Windows Vista / 7及更高版本上安装到AppData \ Roaming,但在Windows XP上安装应用程序数据

时间:2015-12-27 12:25:49

标签: inno-setup appdata userappdatapath

我为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;

2 个答案:

答案 0 :(得分:3)

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(包括XP)上使用{userappdata},并获得所需的结果。您不需要使用IsWindowsXPIsWindowsVista_or_7

的条件参赛作品。

换句话说,我相信,Windows XP和Windows 7上的安装路径是相同。在这两种情况下,它都在SHGetFolderPath(CSIDL_APPDATA)下,在{Inn}的{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”实施。它不会在Windows Vista上返回true。它也应该在Windows 8/10上返回true。

答案 1 :(得分:0)

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