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

我有同样的问题。这是由于 McAfee 防病毒软件对正在编译的 exe 文件运行实时扫描...由于似乎无法从实时扫描中排除目录,我在 McAfee SecurityCenter 中将其关闭,现在它很好。希望这有帮助

于 2013-11-21T14:37:34.180 回答
14

问题通常是打开的资源管理器窗口正在查看输出文件所在的文件夹。

Explorer 在构建可执行文件时不断打开它,试图获取其图标和其他元数据。关闭所有正在查看输出文件夹的打开的资源管理器窗口,然后重试。

出于这个原因,您最好从命令行或 Visual Studio 或其他自动构建过程的一部分运行您的 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

我有 OutputDir = x:]setup 但错误仍然存​​在。如果我重新启动我的机器,然后作为第一个任务构建,那么构建工作。

于 2013-09-09T14:56:45.990 回答
1

Win 7 Pro/64,InnoSetup 5.5.5(a):我遇到了完全相同的 InnoSetup 编译问题。通过撤销共享更改项目中使用的文件夹属性和输出后,它们都可以正常工作。结论 - 最好不要在共享文件夹中使用 InnoSetup。

于 2016-08-18T07:53:47.600 回答
0

当 OutputDir="." 时我有这个。(意思是,将输出与源文件放在同一目录中)。每隔一秒构建就会失败。

我通过添加修改我的 powershell 构建脚本以删除整个输出目录来修复它,然后构建我的应用程序(它自动创建了该目录),然后运行 ​​iscc 来创建 setup.exe

于 2015-02-13T03:53:43.423 回答
0

该错误可能是因为您尝试复制与 Windows 服务链接的文件夹。

要解决此问题,请使用[Code]部分而不是将文件夹放在 [Files] 中。这允许您检查该文件夹是否存在,关闭相关的 Windows 服务并最终复制该文件夹。

于 2015-09-01T16:06:57.857 回答
0

我遇到了同样的问题,上面已经说明了解决方案,当您编译的 .exe 的输出文件在您从 inno setup 放置输出目录的目录中已经具有相同的名称时,出现此错误的另一个原因. 在编译时,您需要一些特殊字符,如“-”或“_”来创建文件名并避免出现此错误消息。

于 2018-04-13T07:07:51.517 回答
0

我在我的工作机器上尝试了各种文件夹,但没有解决问题。我终于通过使用成功了:

OutputDir=C:\Users\userid\Downloads 

(将“userid”替换为您的特定帐户)

于 2020-01-23T23:01:52.883 回答
0

我尝试了上面的所有建议。我做不到。然后我从版本 6.2 切换回 6.0.2 并解决了问题。

于 2021-06-23T15:03:35.563 回答