Inno Setup Установка в AppData\Roaming в Windows Vista/7 и новее, но данные приложения в Windows XP
Я сделал несколько скриптов для 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 ответа
{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
(нет 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"
Примечание: ваш IsWindowsVista_or_7
реализован как "IsWindows7" только. Это не вернет истину в Windows Vista. Он должен возвращать true и в Windows 8/10.
Если вы занимаетесь только дистрибуцией, вы можете рассмотреть возможность использования Adobe AddOns, которая будет касаться всех технических аспектов установки, связанных с платформой.