2015-12-27 55 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

相關問題