2015-12-27 24 views
1

我已经为inDesign制作了几个脚本。现在我想将它们全部分发到安装文件中。由于inDesign脚本驻留在XP和Vista(或以上)的不同位置,因此我遇到了一些问题。我编译的安装程序在Windows XP下工作正常,但不会将任何内容复制到Windows 7 AppData文件夹。当我将文件夹从AppData更改为绝对路径时,它可以正常工作。Inno安装程序安装到AppData Windows Vista/7及更新版本上的漫游,但在Windows XP上的应用程序数据

[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

The {userappdata} constant解析为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)。

因此,我相信您可以在包括XP在内的所有Windows版本上使用{userappdata},并获得理想的结果。您不需要使用IsWindowsXPIsWindowsVista_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”。它在Windows Vista上不会返回true。它也应该在Windows 8/10上返回true。

+0

非常感谢!由于InnoSetup帮助文件中的文件夹常量列出了Vista和更新的非漫游应用程序数据文件夹,因此我认为这可能就是这种情况。你清除了我的怀疑。是的,我修改了“IsWindowsVista_or_7”,并忘记添加已删除的Version.Minor = 0。 – coldbreeze16

+0

正确的代码将简单地为'Result:=(Version.Major> = 6);'表示“Windows Vista(6.0)及更新版本”。但是,你再也不需要这个代码,只需使用'{userappdata}'。 –

0

如果您只是进入发行版,您可能会考虑使用Adobe AddOns来处理所有平台相关的安装技术问题。

+0

谢谢。我会研究它! – coldbreeze16

相关问题