虽然我真的很喜欢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";
发布于 2013-03-14 20:42:25
这不是bug,这只是应用程序的糟糕设计(或糟糕的文档) :)
在您的[Setup]
部分中使用OutputDir
指令来避免这种错误行为。
OutputDir=c:\output
OutputDir
指定脚本的“输出”目录,安装编译器将在该目录中放置生成的SETUP.*
文件。默认情况下,它会在包含此脚本的目录下创建一个名为Output
的目录。
你问为什么?
如果你没有在你的脚本文件中使用OutputDir
(很多人都不使用它),Inno Setup会尝试在"userdocs:“文件夹中创建结果设置,这会在所有的Windows系统上造成很多麻烦。
始终使用此参数,即使您希望在当前文件夹中进行结果设置,在这种情况下,请使用:
OutputDir=output
https://stackoverflow.com/questions/15397414
复制相似问题