2013-10-18 190 views
1

我已將工作獨立程序分配給不同的用戶。當它們連接到共享驅動器時,我想檢查是否有可用的獨立更新。 我有這個工作,它會將新的安裝包下載到獨立程序所在的目錄中。但是我無法安裝它,因爲獨立版已在運行(您不允許覆蓋正在運行的應用程序) 是否有任何方法可以自動更新此更新? 在代碼:在執行獨立程序時更新Matlab獨立程序

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) 

在此先感謝您的幫助,

回答

0

好像你嘗試使用一些程序來更新自己。這聽起來是有問題的,這裏是你可以做什麼:

  1. 運行mainProgram獲得您需要
  2. mainProgram啓動第二個程序包updater
  3. updatermainProgram和更新程序
  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下使用,不知道這是否適用於其他操作系統,但它不應該是很難找到如何殺死其他操作系統的過程。

+0

感謝您的回覆。 我「害怕」這是唯一的解決方案,因爲它迫使我製作多個文件。 我確實有一個關於第3點的問題,我該如何強制關閉其他腳本中的程序/腳本? – user2894107

+0

@ user2894107我已經添加了一些關於如何殺死進程的代碼。如果您不使用Windows,則可能無法正常工作,但應該很容易找到替代方案。 –