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

col*_*e16 3 inno-setup appdata userappdatapath

我为 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
Run Code Online (Sandbox Code Playgroud)
[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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 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}在所有版本的 Windows 上使用,包括 XP,并获得理想的结果。您不需要那些带有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"
Run Code Online (Sandbox Code Playgroud)

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