Inno Setup在Windows Vista / 7及更高版本上安装到AppData\漫游,但在Windows XP上漫游到应用程序数据 [英] Inno Setup Installing to AppData\Roaming on Windows Vista/7 and newer, but Application Data on Windows XP

查看:325
本文介绍了Inno Setup在Windows Vista / 7及更高版本上安装到AppData\漫游,但在Windows XP上漫游到应用程序数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为inDesign编写了多个脚本。现在,我想将它们全部分发到安装文件中。由于inDesign脚本位于XP和Vista(或更高版本)上的不同位置,所以我遇到了一些问题。我的编译设置可以在Windows XP下正常运行,但不能将任何内容复制到Windows 7 AppData 文件夹中。当我将文件夹从 AppData 更改为绝对路径时,它可以正常工作。

I have made several scripts for inDesign. Now I want to distribute them all in a setup file. Since inDesign scripts reside in different locations on XP and Vista (or above), I'm having some problems. My compiled setup works fine under Windows XP but doesn't copy anything to Windows 7 AppData folder. When I change folder from AppData to an absolute path, it works.

[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;


推荐答案

{userappdata} 常量解析为<$ c Windows Vista上的$ c> C:\Users\用户名\AppData\Roaming 。

因此 {userappdata} \漫游解析为 C:\Users\用户名\AppData\Roaming\Roaming (可能)不是您想要的。

So {userappdata}\Roaming resolves to C:\Users\username\AppData\Roaming\Roaming, what is (probably) not what you want.

在Windows XP上, {userappdata} 解析为 C:\文档和设置\用户名\应用程序数据(无漫游)。

On Windows XP, the {userappdata} resolves to C:\Documents and Settings\username\Application Data (no Roaming).

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

Hence, I believe you can use {userappdata} on all versions of Windows, including XP, with desired results. You do not need those conditional entries with IsWindowsXP and IsWindowsVista_or_7.

换句话说,我相信安装路径在Windows XP和Windows 7上是相同。在两种情况下,安装路径都在 SHGetFolderPath(CSIDL_APPDATA) 什么是 {userappdata} 在Inno设置中。

In other words, I believe, the installation path is the same on Windows XP and Windows 7. In both cases it is under SHGetFolderPath(CSIDL_APPDATA) what is {userappdata} in 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上也应该返回true。


Side note: Your IsWindowsVista_or_7 is implemented as "IsWindows7" only. It won't return true on Windows Vista. It should return true on Windows 8/10 too.

这篇关于Inno Setup在Windows Vista / 7及更高版本上安装到AppData\漫游,但在Windows XP上漫游到应用程序数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆