2017-01-17 12 views
0

インストール後に残った部分に問題が発生しました。Innoセットアップインストール後に特定の拡張子を持つファイルをクリーンアップする

私は[FILE]セクションでFlags: deleteafterinstallを設定して、それは私がインストールをdurring別の名前に先フォルダの名前を変更され、それ以来、Inno Setupのは、乱雑に見えるそのままそのフラグを持つファイルそのすべてを残しているいくつかのコードを追加してそれまではうまく働きました。

解決策として、私は[CODE]セクション経由でインストールの最後に実行するこの単純なバッチファイルを作成しました。

Clean_Up.bat:

del /s /f *.rej 
del /s /f *.orig 
del /s /f sed* 
del /s /f *.patch 
del /s /f *.exe 
del /s /f *.bat 

私はそのように、このバッチをコピーしています:

[FILE] 
Source: "{#CompPath}\BatchFiles\Clean_Up.bat"; DestDir: "{app}\subfolder"; Flags: deleteafterinstall 

私はこれでそれを起動しています:

[RUN] 
Filename: "{app}\res_mods\Clean_Up.bat"; flags: runhidden; 

問題があることですこのバッチは.batchファイルもクリーンアップすると考えられ、その結果、CleanUp.batも削除されており、これはunです欲しかった

私はこれに代わり{app}\subfolderおよび編集バッチファイルの{app}にそれをコピーすることによってこの問題を解決したかった:

del /s /f subfolder\*.rej 
del /s /f subfolder\*.orig 
del /s /f subfolder\sed* 
del /s /f subfolder\*.patch 
del /s /f subfolder\*.exe 
del /s /f subfolder\*.bat 

それは私にエラーを与えているしかし:The system cannot find the file specified.

誰かがそれを作る方法を私に助言することができます作業?私は最良の方法は、このバッチをパスカル・コードとコード・セクションに書き直すことだと思いますが、どうしたらよいか分かりません。

+0

なぜフォルダの名前を変更しますか? 'res_mods'のようにファイルを直接インストールしないのはなぜですか? –

+0

インストーラがそのフォルダにどのようにインストールされているかを全面的に修正する必要があります。私たちは現在3つの異なるクライアントバージョンがあり、それらをすべてサポートしたいという状況があります。以前はそれに問題はなかったが、今は新しい状況に対処しなければならないので、私はそれを直す前に、今のところ最も簡単で速い解決策を模索している。 –

+0

私の答えは助けになりましたか?それとも別のものが必要ですか? –

答えて

1

バッチファイルを実行する瞬間、サブフォルダは既に名前が変更されています。

:次に、あなたは、元のバッチファイルを使用することができます

[Run] 
Filename: "{app}\clean_up.bat"; WorkingDir: "{app}\res_mods"; Flags: runhidden; 

del /s /f res_mods\*.rej 
del /s /f res_mods\*.orig 
... 

またはサブフォルダ内のバッチファイルを実行するためにWorkingDir parameterを使用します。だから、新しい名前を使用する必要があります

del /s /f *.rej 
del /s /f *.orig 
... 

また、avo直接[Run]セクションに直接delのコマンドを実行して、バッチファイルのIDを使用:あなたは[Code]セクションでフォルダの名前を変更すると、個人的にけれども

[Run] 
Filename: "{cmd}"; Parameters: "/C del /s /f *.rej"; WorkingDir: "{app}\res_mods"; \ 
    Flags: runhidden 
Filename: "{cmd}"; Parameters: "/C del /s /f *.orig"; WorkingDir: "{app}\res_mods"; \ 
    Flags: runhidden 
... 

は、私もコード内のファイルを削除したいです。一貫性のために。

+0

私は '[RUN]'セクションがこのバッチでは間に合っていないことを知り、実行を '[CODE]'セクションに移しました。 'CurStep = ssDone'に配置する必要があります ' del/s/f res_mods \ *。rej​​'はバッチではなくコード内でどのように見えますか? –

+0

'Exec(ExpandConstant( '{cmd}')、 '/ c del ...'、...);' 'Exec'関数のドキュメントを確認してください。 –

関連する問題