我已经将一个独立的工作分发给不同的用户。当它们连接到共享驱动器时,我想检查是否有此独立驱动器的可用更新。我已经有了这个工作,它会将新的安装包下载到独立安装所在的目录中。但是我无法安装它,因为独立运行已经在运行(您不允许覆盖正在运行的应用程序)有没有办法使此更新自动进行?在代码中:
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)
提前感谢您的帮助,
似乎您尝试使用某些程序来更新自己。这听起来很有问题,您可以执行以下操作:
- 运行
mainProgram
以获取所需的包 - 让我们
mainProgram
开始第二个程序updater
- 让
updater
杀死mainProgram
并更新程序 - 让
updater
开始你的mainProgram
并终止自己
这将要求程序拥有一些权利,但我希望它能为您完成工作。
下面是一个脚本,我用它来终止我的用户的所有 Excel 实例。我想这可以更改为处理mainProgram
。
[~, computer] = system('hostname');
[~, user] = system('whoami');
[~, alltask] = system(['tasklist /S ', computer, ' /U ', user]);
excelPID = regexp(alltask, 'EXCEL.EXEs*(d+)s', 'tokens');
for i = 1 : length(excelPID)
killPID = cell2mat(excelPID{i});
system(['taskkill /f /pid ', killPID]);
end
这是我在Windows下使用的内容,不确定这是否适用于其他操作系统,但是应该不难找到如何在其他操作系统中杀死进程。