9

現在、Inno Setup Compiler を使用して Windows 用のインストーラーを作成していますが、exe にフォルダーを含めようとする場合を除いて、すべて正常に動作しています。つまり、2 つのファイルを含むフォルダーを含めることができるようにする必要があります。このフォルダーは、プログラムのインストール時に .exe ファイルがある場所 (C:\Program Files x86\appFolder) に表示されるようにします。

Innoにはフォルダーを追加するオプションがありますが、何らかの理由で、必要な2つのファイルを含むフォルダーを選択すると正常にコンパイルされますが、実際にプログラムをインストールすると、実際には2つのファイルが追加されますが、フォルダーは追加されません.

次のコード行をオンラインで見つけて使用しましたが、実際には不要なフォルダーがいくつか含まれていました。このコード行の問題は、完全に理解していないことです。フォルダー パスがどこにあるべきかわかりません。Exlude とは: "Setup.iss,generated_images\"

Source: "*.*"; Excludes: "Setup.iss,generated_images\*"; DestDir: "{app}"; Flags:replacesameversion recursesubdirs

誰かが親切にこのコード行を説明してくれませんか?

ありがとう

4

3 に答える 3

18

あなたのコメントから(あなたが話しているすべてのコードを実際に示していないので)、私はあなたが次のようなことをしていると思います:

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion
Source: "subfolder\*.*"; DestDir: "{app}"; Flags:replacesameversion

この場合、 to の内容をコピーしていsubfolderます{app}

コピーしてサブディレクトリを保持する場合は、ディレクトリ自体を指定します。

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags: replacesameversion
Source: "subfolder"; DestDir: "{app}"; Flags: replacesameversion recursesubdirs

または、明示的な宛先ディレクトリを指定します。

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion
Source: "subfolder\*.*"; DestDir: "{app}\subfolder"; Flags:replacesameversion
于 2013-11-14T17:08:32.073 に答える
6

私は同様の問題を抱えていました:

私はとりわけこのフォルダを持っています:

  • .\WorkFolder\MyEmptyFolder\

インストールされたシステムにこれが欲しい:

  • .\PathToExe\Name.exe
  • .\PathToExe\MyEmptyFolder\

フォルダーが空でない場合は機能しますが、空のフォルダーが必要になる場合があります。

私はこの行を使用しています:

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs

スクリプトに実行させたいのは(毎回スクリプトを書き直す必要なしに):

  • フォルダが空の場合、インストール時にフォルダは空になりますが存在します
  • フォルダーにファイルやサブフォルダーがある場合、インストール時にフォルダーが存在し、そのコンテンツが含まれます

私の問題は、それが空の場合、スクリプトがファイルがないことを示すエラーで終了することです。そのフォルダが欲しいのと、その時点でそこにあるすべてのものを理解していません。

アイデアをありがとう、私はそれらを試して解決策を得ました、ここにあります:

まず、フォルダーが作成されることを確認します (ファイル セクションを含むファイルがない場合、フォルダーは作成されません)。

[Dirs]
Name: {app}\; Permissions: users-modify
Name: {group}\; Permissions: users-modify
Name: {app}\MyEmptyFolder\; Permissions: users-modify

次に、「ファイル」セクションの行を編集して、「skipifsourcedoesntexist」を含めます。

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist

そして、それは私が望むことを行います:そのようなフォルダーとその上にあるすべてのものを含めます。フォルダーが空であるかどうかに関係なく、空の場合、スクリプトはエラーで終了しません。

これはどのように機能しますか?

簡単なトリック: フォルダーが空の場合、ファイル セクションの行は失敗し、スクリプトはエラーで終了しますが、skipifsourcedoesntexist を使用するとそれを回避できますが、そのようなフォルダーは存在しなくなります。そのため、そのようなフォルダーを Dirs セクションに追加します。常に作成されるようにします。

これが他の人が怒らないのに役立つことを願っています!

于 2015-06-19T11:45:38.193 に答える