2013-03-13 302 views
7

InnoSetupが本当に好きですが、間違ったメッセージで苦しんでいましたが、私の欲求不満はさらに高まりました。 InnoSetupのバグであることは間違いありませんが、私が見つけることができる有用な回避策はありません。InnoSetup - コンパイル時に "別のプロセスで使用中のファイル..."というメッセージが表示される

ファイルをコピーしてショートカットを作成する非常にシンプルな(署名済みの)セットアップがあります。実行可能ファイルも含まれていません。セットアップをコンパイルしようとすると、「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」というメッセージが繰り返し表示されます(通常は3回以内にコンパイルするように設定されます)。多くの人の後に。多くの試み。 「使用中」のファイルは、InnoSetup出力またはエラーダイアログからはっきりしません。競合するプロセスはほとんどありません。 (私はマシンをリブートして、まだこのメッセージを受け取りました)。

これを解決する方法に関するご意見は大変ありがたいです。

これは完全なセットアップコードです。署名されていますが、同じ署名で作成した他の設定では問題ありません。

#define MyAppName "Easy-IAP for IronKey" 
#define MyAppVersion "4.0" 
#define MyAppPublisher "Command Post Solutions" 
#define MyAppURL "http://www.commandpostsolutions.com/" 

[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId={{51668D56-27F6-4C83-87F2-677328EFE808} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName="\EZ-IAP" 
DefaultGroupName={#MyAppName} 
DisableProgramGroupPage=yes 
OutputBaseFilename=IronKeySetup 
SetupIconFile=C:\Users\ron\Dropbox\EZIAP\eziap.ico 
Compression=lzma 
SolidCompression=yes 
SignedUninstaller=yes 
SignTool=Standard /d $qEasy-IAP Installer$q $f                 

[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 

[Files] 
Source: "C:\Users\ron\Dropbox\Easy-IAP for IronKey\AccessDatabaseEngine.exe"; DestDir: "{app}"; Flags: onlyifdoesntexist 
Source: "C:\Users\ron\Dropbox\Easy-IAP for IronKey\dotNetFx40_Full_x86_x64.exe"; DestDir: "{app}"; Flags: onlyifdoesntexist 
Source: "C:\Users\ron\Dropbox\Easy-IAP for IronKey\Easy-IAP for IronKey\bin\Release\Easy-IAP for IronKey.exe"; DestDir: "{app}"; 
; NOTE: Don't use "Flags: ignoreversion" on any shared system les 
[ICONS] 
Name: "{drive:{app}}\Easy-IAP"; Filename: "{app}\Easy-IAP for IronKey.exe"; 
+2

"同期のために"ロックされているかもしれないDropboxディレクトリにファイルを保存する代わりに、ソースファイルを別の場所にコピーすることはありますか? – RobeN

+4

答えはほとんど常に「あなたのアンチウイルスを無効にする」ので、私はここでも同じことを言います。 – Deanna

+0

その提案ありがとう、@ローベ - それは私の正気を救った!私の場合は、Dropboxにソースファイルを保存していましたが、Innoの 'OutputDir'をDropbox以外のファイルパスに設定していました。私は、Dropboxが作成したビルドファイルを見るとすぐに、それがロックされ、Innoはそれが始まったビルドにアクセスできなくなると思います。 –

答えて

4

これはバグではありません、これが唯一のアプリケーションの悪いデザイン(または悪いドキュメンテーション)です:)

は、この間違った動作を回避するために、あなたの[Setup]セクションにOutputDirディレクティブを使用してください。

OutputDir=c:\output 

OutputDirは、セットアップコンパイラが結果SETUP.*ファイルを配置する場所でのスクリプトのための「出力」ディレクトリを指定します。デフォルトでは、このためのスクリプトを含むディレクトリの下にOutputという名前のディレクトリが作成されます。

なぜですか?

スクリプトファイルにOutputDirを使用していない(そして多くの人がそれを使用しない)場合、Inno Setupは "userdocs:"フォルダにセットアップを作成しようとするため、すべてのWindowsシステムで問題が発生します。

常にあなたが、その場合の使用には、現在のフォルダに設定したしているしたい場合でも、このパラメータを使用します]の設定が、エラーが引き続き発生:

OutputDir=output 
+3

* "スクリプトファイルでOutputDirを使用しない場合、Inno Setupは結果セットを" userdocs: "フォルダに作成しようとします。" *いいえ、それはありません。このディレクティブを省略すると、InnoSetupは 'CurrentScriptFolder \ Output'フォルダに出力を作成します。スクリプトがまだ保存されておらず、 'OutputDir'指令を使用していない場合にのみ、出力は' userdocs: 'フォルダになります。 – TLama

+0

ありがとうございました。あなたは私に大きな苦痛を和らげました。私は本当にInnoSetupが大好きです。 –

1

は私がoutputDirの=のxを持っています。私のマシンを再起動してから最初のタスクとしてビルドすると、ビルドが動作します。

24

私は同じ問題がありました。 これは、McAfeeウイルス対策ソフトが、実行中のexeファイルのリアルタイムスキャンを実行していたためです... リアルタイムスキャンからディレクトリを除外することはできないように見えるので、McAfee SecurityCenterでシャットダウンしても問題ありません。 このヘルプが必要です

+0

Avira Antivirusは最近、同じことを始めました...セットアップファイルをコンパイルするために、リアルタイム保護を無効にする必要がありました。 – Kefik

+1

これは受け入れられる回答である必要があります – Rima

+0

セキュリティセンターからMcAfeeをシャットダウンする方法が見つからないようですか? –

0

OutputDir = "。 (つまり、ソースファイルと同じディレクトリに出力します)。毎秒2回ビルドに失敗します。

私は問題がある私のアプリ(自動作成したディレクトリ)を構築し、setup.exeを作成するために、ISCCを実行し、その全体の出力ディレクトリを削除するには、私のPowerShellのビルドスクリプトを修正追加することにより、

3

それを固定多くの場合、エクスプローラウィンドウが開き、出力ファイルが存在するフォルダを表示します。

エクスプローラは、アイコンやその他のメタデータを取得しようとすると、実行可能ファイルを継続的に開きます。出力フォルダを表示している開いているエクスプローラウィンドウを閉じてもう一度やり直してください。

この理由から、コマンドラインまたはビジュアルスタジオの一部または他の自動ビルドプロセスから、innoセットアップファイルを実行することをお勧めします。

+0

これは私のために行いました。ありがとう...時間の無駄だよ! – Andy

0

Windowsサービスにリンクされているフォルダをコピーしようとしているため、エラーが発生している可能性があります。

この問題を解決するには、[Files]にフォルダを置く代わりに[Code]セクションを使用します。これにより、フォルダが存在するかどうかをチェックし、関連するWindowsサービスを閉じて、最後にフォルダをコピーすることができます。

1

Win 7 Pro/64、InnoSetup 5.5.5(a):InnoSetupコンパイルの問題と同じようにaxactlyでした。プロジェクトで使用されているフォルダのプロパティを変更し、共有を取り消して出力すると、すべて正常に動作します。結論 - InnoSetupを共有フォルダ内で使用しない方が良いです。

+0

既存の回答を再投稿しないでください。 3年前に投稿されたこの質問には、すでに多くの回答があり、あなたは読者に利益をもたらすものではありません。 – Marki555

+0

私は同意しません。私の解決策は答えに言及されておらず、現実世界で働いています。 –

+0

多くのIDEが既定で ".. \ users \ documents \ .."ディレクトリを使用してプロジェクトのフォルダツリーを作成するように、エントリに記載された問題に出会った人に、自分の投稿が役立つことを絶対に嬉しく思っています。そのディレクトリにはしばしば「共有フォルダ」属性があります。このような環境の中でInnoSetupを使うことは、私をここに連れて来る問題につながります。 –

関連する問題