1

我已经向不同的用户分发了一个独立的工作。当它们连接到共享驱动器时,我想检查一下是否有可用的独立更新。我已经完成了这项工作,它会将新的安装包下载到独立设备所在的目录中。但是我无法安装它,因为独立版本已经在运行(您不允许覆盖正在运行的应用程序)有没有办法让这个更新自动进行?在代码中:

copyfile(name,CurrentDirectory); % Download the new package [this works]
system([CurrentDirectory,name,' -o']); % Can't overwrite the .exe file (this code will just run the package of the standalone)

在此先感谢您的帮助,

4

1 回答 1

0

似乎您尝试使用某些程序进行自我更新。这听起来很成问题,您可以这样做:

  1. 运行mainProgram获取你需要的包
  2. 让我们mainProgram开始第二个程序updater
  3. 让我们updater杀死mainProgram并更新程序
  4. updater你开始mainProgram并终止自己

它需要程序拥有一些权利,但我希望它能为你完成工作。


这是我用来为您的用户杀死所有 Excel 实例的脚本。我想这可以改为处理mainProgram

    [~, computer] = system('hostname');
    [~, user] = system('whoami');
    [~, alltask] = system(['tasklist /S ', computer, ' /U ', user]);
    excelPID = regexp(alltask, 'EXCEL.EXE\s*(\d+)\s', 'tokens');
    for i = 1 : length(excelPID)
        killPID = cell2mat(excelPID{i});
        system(['taskkill /f /pid ', killPID]);
    end

这是我在 Windows 下使用的,不确定这是否适用于其他操作系统,但不难找到如何在其他操作系统中杀死进程。

于 2013-10-18T12:43:47.013 回答