def _migrateEditWith(self, ext):
     """ Migrate older "Edit with Komodo" to "Edit with Komodo IDE|EDIT",
         also from HKLM to HKCU"""
     import wininteg
     try:
         try:
             found = wininteg.removeFileAssociation(ext, "Edit with Komodo",
                                                    self._komodo, fromHKLM=True)
         except WindowsError, ex:
             if ex.winerror != 5: # ERROR_ACCESS_DENIED
                 raise
             return False
         if not found:
             return False
         wininteg.addFileAssociation(ext, "Edit with %s" % (self._appName,), self._komodo)
         return True
    def _addFileAssociation(self, ext, action):
        import wininteg
        try:
            if action.endswith(self._appName):
                untypedAction = action[:-len(self._appName)] + "Komodo"
                try:
                    if wininteg.removeFileAssociation(ext, untypedAction,
                                                      self._komodo, fromHKLM=True):
                        log.info("Removed untyped action %r", untypedAction)
                except WindowsError, ex:
                    if ex.winerror != 5: # ERROR_ACCESS_DENIED
                        raise
                    # can't remove the untyped action, don't add
                    # the new one either (to prevent duplicates)
                    log.info("Failed to remove untyped action %r, not adding typed action %r",
                             untypedAction, action)
                    return

            wininteg.addFileAssociation(ext, action, self._komodo)
 def _migrateEditWith(self, ext):
     """ Migrate older "Edit with Komodo" to "Edit with Komodo IDE|EDIT",
         also from HKLM to HKCU"""
     import wininteg
     try:
         try:
             found = wininteg.removeFileAssociation(ext,
                                                    "Edit with Komodo",
                                                    self._komodo,
                                                    fromHKLM=True)
         except WindowsError, ex:
             if ex.winerror != 5:  # ERROR_ACCESS_DENIED
                 raise
             return False
         if not found:
             return False
         wininteg.addFileAssociation(ext,
                                     "Edit with %s" % (self._appName, ),
                                     self._komodo)
         return True
    def _addFileAssociation(self, ext, action):
        import wininteg
        try:
            if action.endswith(self._appName):
                untypedAction = action[:-len(self._appName)] + "Komodo"
                try:
                    if wininteg.removeFileAssociation(ext,
                                                      untypedAction,
                                                      self._komodo,
                                                      fromHKLM=True):
                        log.info("Removed untyped action %r", untypedAction)
                except WindowsError, ex:
                    if ex.winerror != 5:  # ERROR_ACCESS_DENIED
                        raise
                    # can't remove the untyped action, don't add
                    # the new one either (to prevent duplicates)
                    log.info(
                        "Failed to remove untyped action %r, not adding typed action %r",
                        untypedAction, action)
                    return

            wininteg.addFileAssociation(ext, action, self._komodo)