15

私は 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"; 
4

10 に答える 10

33

私も同じ問題を抱えていました。これは、コンパイル中の exe ファイルに対してリアルタイム スキャンを実行している McAfee アンチウイルスが原因でした... リアルタイム スキャンからディレクトリを除外することはできないように思われるため、McAfee SecurityCenter でディレクトリをシャットダウンしました。この助けを願っています

于 2013-11-21T14:37:34.180 に答える
14

問題は、多くの場合、出力ファイルが存在するフォルダーを表示しているエクスプローラー ウィンドウです。

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

このため、コマンド ラインから、またはビジュアル スタジオやその他の自動ビルド プロセスの一部から inno セットアップ ファイルを実行するのが最適です。

于 2015-05-26T15:35:55.973 に答える
6

これはバグではなく、アプリケーションの設計が悪い (またはドキュメントが悪い) だけです :)

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

OutputDir=c:\output

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

なぜですか?

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

結果のセットアップを現在のフォルダーに入れたい場合でも、常にこのパラメーターを使用します。その場合は、次を使用します。

OutputDir=output
于 2013-03-14T12:42:24.887 に答える
1

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

于 2016-08-18T07:53:47.600 に答える
1

OutputDir = x:]setup がありますが、それでもエラーが発生します。マシンを再起動して最初のタスクとしてビルドすると、ビルドは機能します。

于 2013-09-09T14:56:45.990 に答える
0

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

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

于 2015-09-01T16:06:57.857 に答える
0

OutputDir="." のときにこれがありました。(つまり、出力をソース ファイルと同じディレクトリに配置します)。ビルドごとに失敗します。

powershell ビルド スクリプトを変更して出力ディレクトリ全体を削除し、アプリをビルドして (そのディレクトリを自動作成)、iscc を実行して setup.exe を作成することで修正しました。

于 2015-02-13T03:53:43.423 に答える