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. mainProgram2番目のプログラムを開始しましょう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 で使用するものです。これが他の OS で機能するかどうかはわかりませんが、他のオペレーティング システムでプロセスを強制終了する方法を見つけるのは難しいことではありません。

于 2013-10-18T12:43:47.013 に答える