「app.uninstall_version(v)」を使用して esky のバージョンをアンインストールしようとしていますが、そうすると次のエラーが発生します。
[Error 5] Access is denied.
Traceback (most recent call last):
File "Example.py", line 35, in EskyUpdate
File "esky\__init__.pyc", line 951, in uninstall_version
File "esky\__init__.pyc", line 1008, in _cleanup_bootstrap_env
File "esky\fstransact\win32txf.pyc", line 200, in remove
File "esky\fstransact\win32txf.pyc", line 214, in _remove
File "esky\fstransact\win32txf.pyc", line 24, in wrapper
WindowsError: [Error 5] Access is denied.
私のプログラムは、プログラムの新しいバージョンが利用可能になるとインストールし、新しいバージョンを別のプロセスで開き、その終了コードを待ちます。終了コードが 0 の場合、プログラムは再起動して新しいバージョンを実行しますが、終了コードが 0 でない場合 (新しいバージョンにエラーがあることを意味します)、プログラムは新しいバージョンを削除し、通常どおり実行を続けます。
コードは次のとおりです。
def EskyUpdate():
if getattr(sys,"frozen",False):
app = esky.Esky(sys.executable,"http://example.com/downloads/")
updateVersion = app.find_update()
if(updateVersion != None):
app.fetch_version(updateVersion)
app.install_version(updateVersion)
appexe = esky.util.appexe_from_executable(sys.executable)
exitCode = subprocess.call(appexe)#calls the new version in a different process
if exitCode == 0:
os.execl(appexe, *([appexe]+sys.argv))
else:
app.uninstall_version(updateVersion)#this is where the error occurs
新しいバージョンをアンインストールしようとすると「アクセスが拒否されました」というエラーが表示されるのはなぜですか? また、新しいバージョンをアンインストールするにはどうすればよいですか?