标签: file-in-use

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 …
Run Code Online (Sandbox Code Playgroud)

inno-setup file-in-use

10
推荐指数
3
解决办法
8106
查看次数

"进程无法访问该文件,因为它正被另一个进程使用"与图像

我已经看到很多这样的问题已经解决了,问题主要是由于流没有被妥善处理.

我的问题略有不同,请点击代码段

 foreach (Images item in ListOfImages)
 {
      newPath = Path.Combine(newPath, item.ImageName + item.ImageExtension);
      File.Create(newPath);

      File.WriteAllBytes(newPath, item.File);
 }
Run Code Online (Sandbox Code Playgroud)

Images自定义结构在哪里,item.File是原始数据byte [].

我的问题是,在WriteAllBytes调用它的行中,抛出异常.消息如下:

The process cannot access the file because it is being used by another process

我再也不知道我怎么会以某种方式进行close这个过程.

c# asp.net file-in-use

9
推荐指数
2
解决办法
5万
查看次数

重命名正在运行的可执行文件(exe)

我们正在尝试同时将更新推送到多个服务器,我的经理发现可以重命名正在运行的.exe文件.利用这些知识,他想重命名正在运行的exe并复制所述exe的新版本,这样任何运行foo.exe的内存副本的人都可以,并且任何打开指向foo.exe的快捷方式的人都将获得一个新副本已应用更新.

我想我需要澄清,他不希望旧版本神奇地更新,他只是希望他们继续运行旧版本,直到他们再次打开exe,在这种情况下,它将打开新的名称,具有该名称旧的.

它有时会抛出一个异常,即文件在他的程序中使用,但如果他尝试在循环中重命名它最终会成功.在我的机器上,我甚至无法在循环中使其工作.

我的第一个主要问题是:这样做是否可以接受.重命名正在运行的可执行文件是否应该是有效的方案?

其次,如果它是一个有效的场景,那么怎么可靠地做到这一点呢?我们目前的想法是尝试使用File.Move(C#)进行重命名,如果它不起作用,则写出错误日志,以便手动处理.

.net c# windows file-rename file-in-use

8
推荐指数
3
解决办法
1万
查看次数

Delphi等到文件复制过程完成

我有一个线程用于ReadDirectoryChangesW在文件夹中添加或删除文件时通知我.

对于每个新图像,我打开文件并创建图像的缩略图.但是,在将文件完全复制到目标文件夹之前,我会收到通知,在这种情况下,我只会获得部分缩略图.(文件从远程位置复制到中央服务器,网络在高峰时间可能会变慢.)

我确实检查文件是否正在使用,但这似乎不适用于图像文件.

HFileRes := CreateFile(pchar(Filename), GENERIC_READ or GENERIC_WRITE, 0, nil,   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ;
Result := (HFileRes = INVALID_HANDLE_VALUE);
if (not Result) then
  CloseHandle(HFileRes) ;
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法检测文件何时被完全复制,或者我只是等到文件大小或上次修改时间自上次检查后没有改变?

delphi readdirectorychangesw file file-in-use

7
推荐指数
1
解决办法
2403
查看次数

如何修复'文件正在被另一个进程使用'错误

我创建了一个程序,它能够通过datagridview修改.exe.config文件(app config)的内容,并在datagridview上显示键值对.问题是,我有一个保存设置,它将旧值替换为用户键入的新值.它保存,下次打开它时,文件将被覆盖,但当我尝试加载配置文件以更新用户设置已更改为时,我得到"另一个进程使用的文件"错误.

这是代码:

    private XmlDocument m_XmlDoc;

    private FileStream fIn;
    private StreamReader sr;
    private StreamWriter sw;

    private OrderedDictionary m_Settings;

    private void ProgramConfig_Load(object sender, EventArgs e)
    {
        try
        {
            loadconfigfile(GatewayConfiguration.Properties.Settings.Default.Config);

            BindingList<KeyValueType> list = new BindingList<KeyValueType>();
            for (index = 0; index < m_Settings.Count; index++)
            {
                list.Add(new KeyValueType(keys[index], values[index].ToString()));
            }

            var source = new BindingSource();
            source.DataSource = list;
            dataGridView1.DataSource = source;
        }
        catch (Exception ex)
        {
            textBox1.Text = ex.Message;
        }
    }

    public void loadconfigfile(string configfile)
    {
        if (File.Exists(configfile))
        {
            m_XmlDoc = new XmlDocument();
            GatewayConfiguration.Properties.Settings.Default.Config …
Run Code Online (Sandbox Code Playgroud)

c# file-in-use

3
推荐指数
2
解决办法
2138
查看次数

检测其他进程正在使用的文件

在 Windows 等上,我曾经使用一种技巧来找出当前正在使用的文件(专门编写的)。

我用来打开文件进行写入,如果它失败了,很可能另一个进程正忙于访问它。

遗憾的是,这些技巧(使用带有排他锁的 C OPEN 进行写入)在我的 Mac 上不起作用。虽然我在终端中的 curl 仍在写入我的 -fileBusy() 检查失败。

使用 F_GETLK 对 fd 调用 fcnt 也不会显示任何锁定。

我有没有机会检测一个文件是否正在被另一个进程使用?

Ps> 无法侦听 fsevents,因为我的应用程序在其他应用程序/进程创建之后启动。

macos cocoa file objective-c file-in-use

3
推荐指数
1
解决办法
2266
查看次数

VB - 使用 StreamWriter 写入文件

我正在尝试使用 StreamWriter 写入文件。

Dim write as IO.StreamWriter
write = new io.streamwriter(file)
write.write(txtEncryption.text)
write.close
Run Code Online (Sandbox Code Playgroud)

我在调试模式下停止了代码,我看到它崩溃并在到达第 2 行时直接进入异常。

是因为我刚刚制作了文件并且它仍在使用中吗?我怎样才能避免这种情况?

vb.net debugging streamwriter file-in-use

3
推荐指数
1
解决办法
2万
查看次数

Windows Installer - 安装包时避免 FileinUse 对话框

当有文件的更新补丁必须用现有文件替换时,如果其中一个文件正在被任何进程使用,则会弹出一个正在使用的文件对话框。我想避免那个对话框并使该文件排队等待安装,以便在系统重新启动时安装它。我已经读到在重新启动时排队更新文件是 Windows 安装程序的内置功能。有人可以建议我删除那个 FileInUse 对话框的方法。我尝试将“MsiRMFilesInUse”属性设置为“0”,但没有奏效。

windows-installer wix reboot file-in-use restartmanager

3
推荐指数
1
解决办法
3678
查看次数

文件仍在使用错误32如何释放它?

我通过以下代码上传文件.

上传成功后,我试图删除该文件,但我得到一个32 - 文件正在使用错误.

任何人都可以告诉我如何在使用错误中解决此文件?以下代码正在上传文件,但在完成后不会释放它.

var
  HTTP: TidHTTP;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  PostData: TIdMultiPartFormDataStream;
  ResponseStream: TStringStream;
  Delete : Boolean;

begin
  ResponseStream := TStringStream.Create('');
  HTTP := TidHTTP.Create(nil);
  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

  try
    SSLIOHandler.SSLOptions.Method := sslvSSLv3;
    HTTP.ReadTimeout := 30000; //30 seconds
    HTTP.ConnectTimeout := 30000; //30 seconds
    HTTP.IOHandler := SSLIOHandler;
    HTTP.HTTPOptions := [hoKeepOrigProtocol];
    HTTP.ProtocolVersion := pv1_1;
    PostData := TIdMultiPartFormDataStream.Create;

    PostData.AddFormField('username', 'demo');
    PostData.AddFormField('password', 'demo');
    PostData.AddFormField('action', 'upload');
    PostData.AddFormField('accountno', 'demo');

  PostData.AddFile('uploadedfile', FileName, GetMIMETypeFromFile(FileName));

  HTTP.Request.ContentType := PostData.RequestContentType;
  HTTP.Post('http://uploadsite.com/ex/exampleAPI.asmx/Process', PostData, ResponseStream);

  if AnsiContainsStr(ResponseStream.DataString, 'Done') then
    Delete := True;

finally
  SSLIOHandler.Free;
  HTTP.Free; …
Run Code Online (Sandbox Code Playgroud)

delphi file delphi-2009 file-in-use

2
推荐指数
1
解决办法
905
查看次数

发送带有附件的电子邮件后如何关闭文件?

我有一个循环,它向电子邮件列表中的人员发送带有附件的电子邮件。问题是,当涉及到列表中的最后一个人时,我在电子邮件中附加的文件仍然保持在 Windows 中使用的状态。

for index, row in f.iterrows():
    print (row["ManagerEmail"]+row["filename"])
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['Subject'] = row["filename"] + f" Sales Letter"
    msg.attach(MIMEText(body, 'plain'))
    filename = row["filename"]
    toaddr = row["ManagerEmail"]
    attachment = open(row["filepath"], "rb")
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
    msg.attach(part)
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)
Run Code Online (Sandbox Code Playgroud)

不知何故,我需要在末尾添加一个参数来关闭文件,但我不知道该怎么做。

python email-attachments file-in-use

0
推荐指数
1
解决办法
223
查看次数