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

Inno setup Inno安装程序在Windows Vista/7及更高版本上安装到AppData\Roaming,但在Windows XP上安装应用程序数据,inno-setup,appdata,userappdatapath,Inno Setup,Appdata,Userappdatapath,我为inDesign制作了几个脚本。现在我想将它们全部分发到一个安装文件中。由于inDesign脚本位于XP和Vista(或更高版本)上的不同位置,我遇到了一些问题。我编译的安装程序在Windows XP下运行良好,但不会将任何内容复制到Windows 7AppData文件夹。当我将文件夹从AppData更改为绝对路径时,它会工作 [Files] Source: "Akruti Converter.jsx"; DestDir: "{userappdata}\Roaming\Adobe\InDes

我为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
[代码]
函数IsWindowsXP:布尔型;
变量
版本:TWindowsVersion;
开始
GetWindowsVersionEx(版本);
结果:=Version.NTPlatform和(Version.Major=5)和(Version.Minor=1);
结束;
函数IsWindowsVista_或_7:布尔值;
变量
版本:TWindowsVersion;
开始
GetWindowsVersionEx(版本);
结果:=Version.NTPlatform和(Version.Major=6)和((Version.Minor=1));
结束;
在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
(无
漫游

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

换句话说,我相信,在Windows XP和Windows 7上的安装路径是相同的。在这两种情况下,它都位于Inno设置中的
{userappdata}

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


旁注:您的
iWindowsVista\u或_7
仅实现为“iWindows7”。在Windows Vista上不会返回true。它也应该在Windows 8/10上返回true。

如果你只限于分发,你可以考虑Adobe Advon来处理所有与平台相关的安装技术方面的问题。由于InnoSetup帮助文件中的文件夹常量列出了Vista和更新版本的非漫游应用程序数据文件夹,因此我认为可能是这种情况。你消除了我的疑虑。是的,我正在修改“iWindowsVista”或“iWindowsVista 7”,但忘了添加我已删除的版本。次要版本=0。正确的代码应该是
Result:=(Version.Major>=6)表示“Windows Vista(6.0)及更高版本”。但同样,您根本不需要这些代码,只需使用
{userappdata}
。谢谢。我会调查的!