代码之家  ›  专栏  ›  技术社区  ›  fs_tigre

SetupIconFile上出现Inno安装错误-进程无法访问该文件,因为其他进程正在使用该文件

  •  0
  • fs_tigre  · 技术社区  · 7 年前

    由于某些原因,我在设置 Setup Icon 对于安装程序。

    错误:

    该进程无法访问该文件,因为其他进程正在使用该文件

    脚本:

    #define MyAppName "MyApp 4.0"
    #define MyAppVersion "4.0"
    #define MyAppPublisher "Some Company Name"
    #define MyAppURL "http://www.example.com/"
    #define MyAppExeName "MyApp.exe"
    
    [Setup]
    AppId={{F89D3454-5DFD-471B-B4A1-D49DFB8637B0}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}\MyApp App
    DisableDirPage=yes
    DisableProgramGroupPage=yes
    LicenseFile=C:\Users\Some Folder\MyApp-License.txt
    OutputDir=C:\Users\Some Folder\Installers
    OutputBaseFilename=Setup-MyApp
    SetupIconFile=C:\Users\Some Folder\Logos\logo.ico
    Compression=lzma
    SolidCompression=yes
    
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    
    [Files]
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.Extras.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.Extras.xml"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.Platform.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.Platform.xml"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\GalaSoft.MvvmLight.xml"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Microsoft.Practices.ServiceLocation.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Microsoft.Practices.ServiceLocation.xml"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Newtonsoft.Json.xml"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.AvalonDock.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.AvalonDock.Themes.Aero.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.AvalonDock.Themes.Metro.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.DataGrid.dll"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\UserName\SomeFolder\MyApp\bin\Release\Xceed.Wpf.MyAppkit.dll"; DestDir: "{app}"; Flags: ignoreversion
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    
    [Icons]
    Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
    Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
    
    [Run]
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
    

    如果我把评论删掉 SetupIconFile=C:\Users\Some Folder\Logos\logo-name.ico 它编译得很好,没有错误。

    你知道我能做些什么来解决这个问题吗?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  -1
  •   user3008309    7 年前

    安*。ico文件由给定图片的多个布局(或网格)组成。 比如24*24像素、48*48像素、64*64像素等等,取决于使用的屏幕分辨率。 可能是其中一个需要的层不存在或确实被锁定。 尝试使用Ico FX创建*。创建BMP的ico文件,并在脚本中使用它。 或者通过图标提取器提取图标。

    无论你做什么,都要使用一条短路径,最好不要有空格