web-dev-qa-db-ja.com

inno-setupを使用してユーザーのAppDataフォルダーにファイルをインストールする

Inno-Setupバージョン5.5.3(a)を使用しています。

[Files]
Source: "C:\GPT\GPT.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\GPT\GPT.dat"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

「GPT.dat」ファイルを「GPT」というカスタムフォルダーのユーザーのAppDataフォルダーにインストールしたい

例えばAppData\GPT \

たとえば、私のデルファイコードでは、ユーザーのAppDataパスに「GPT」というフォルダーを作成します。これらは私がファイルを置きたいところです

var
  path: array[0..MAX_PATH] of char;

 SHGetFolderPath(0, CSIDL_APPDATA, 0, SHGFP_TYPE_CURRENT, @path);
 userPath:= Path;
 UserPath:= UserPath + '\GPT\';
 if not DirectoryExists(UserPath) then
   CreateDir(UserPath);

これを実現するために、Innoスクリプトの[ファイル]セクションを編集する方法を教えてもらえますか?

ありがとう

12
JakeSays

{userappdata} 定数を使用する必要があります。これは、ファイルの宛先ディレクトリとして、 CSIDL_APPDATA アイテムIDにのみマップされます。

[Files]
Source: "C:\GPT\GPT.dat"; DestDir: "{userappdata}\GPT\"; Flags: ignoreversion createallsubdirs recursesubdirs comparetimestamp

{userappdata}&{commonappdata}アプリケーションデータフォルダーへのパス。

 CSIDL_APPDATA = {userappdata} = C:\Documents and Settings\username\Application Data
 CSIDL_COMMON_APPDATA = {commonappdata} = C:\Documents and Settings\All Users\Application Data
17
Ravaut123

使用する必要があります:{userappdata}
Inno Setupのドキュメントを確認した場合:

{userappdata} = C:\Documents and Settings\username\AppData\Roaming\
{commonappdata} = C:\Documents and Settings\All Users\AppData\Roaming\

{localappdata}:ローカルへのパス(nonroaming) ApplicationDataフォルダー。
{userappdata}&{commonappdata}:アプリケーションデータフォルダーへのパス。

私が使う :

[Files]
Source: MyPath\* ;  Flags: recursesubdirs createallsubdirs; DestDir: {userappdata}\MySoftware\ ; Components: ConfigFiles

そして私の設定ファイルはにあります:

C:\ Users *\AppData\Roaming\MySoftware **

3
MSA

Miralsのコメントを正しく解釈する場合は、{programdata}を使用する方が適切と思われます。

ただし、XPでは{programdata}はなく、{commonappdata}または{userappdata}しかないため、インストールを多様化する必要があります。{programdata}は後の発明です。

厄介な罠は、デスクトップとuserappdataがサーバーにミラーリングされている場合(「移動プロファイル」)であり、iniファイルストレージにuserappdataを使用すると、プログラムの速度が大幅に低下します。少なくとも私の経験ではそうです。

0
user3265438