Пример #1
0
 def _installGPG(self, phase=0, dt=None):
     if getPlatform() == PLATFORM_MAC:
         # TODO handle errors
         if phase == 0:
             self._ui.setInteractive(False)
             
             self._setStatus("Searching for latest version...")
             dt = DownloadThread(getValidQtParent(), self.logger, "https://gpgtools.org/releases/macgpg2/appcast.xml")
             dt.success.connect(partial(self._install_gpg_finished, 0))
             dt.error.connect(partial(self._install_gpg_failed, 0))
             dt.start()
             
         elif phase == 1:
             xmlContent = dt.getResult()
             dt.close()
             
             e = ElementTree.fromstring(xmlContent)
             dmgURL = e.iter("channel").next().iter("item").next().iter("enclosure").next().attrib["url"]
             
             tmpFile = tempfile.NamedTemporaryFile(suffix=".dmg", prefix="macgpg", delete=False)
             self.logger.debug("Downloading %s to %s", dmgURL, tmpFile.name)
             self._setStatus("Downloading MacGPG...", progress=True)
             self._ui.setProgress(0)
             
             dt = DownloadThread(getValidQtParent(), self.logger, dmgURL, target=tmpFile, progress=True)
             dt.success.connect(partial(self._install_gpg_finished, 1))
             dt.error.connect(partial(self._install_gpg_failed, 1))
             dt.progressChanged.connect(self._downloadProgressChanged)
             dt.start()
             
         elif phase == 2:
             # indeterminate
             self._ui.setProgressIndeterminate(True)
             self._setStatus("Installing MacGPG...", progress=True)
             
             dmgFile = dt.target.name
             dt.close()
             
             st = ShellThread(getValidQtParent(), self.logger, [get_settings().get_resource('bin', 'mac_gpg_installer.sh'), dmgFile], context=dmgFile, quiet=False)
             st.finished.connect(partial(self._install_gpg_finished, 2))
             st.start()
             
         elif phase == 3:
             dmgFile = dt.context
             if os.path.exists(dmgFile):
                 os.remove(dmgFile)
             
             self._ui.setProgressIndeterminate(False)
             if dt.exitCode == 0:
                 self._setStatus("MacGPG installed successfully.")
             else:
                 self._setStatus("Error installing MacGPG.", err=True)
                 if dt.pErr:
                     self.logger.error("Error installing MacGPG.\nConsole output: %s", dt.pErr.strip())
             
             self._updateCheckButtonText()
             self._ui.setInteractive(True)