def UnregisterClasses(*classes, **flags): quiet = 'quiet' in flags and flags['quiet'] for cls in classes: clsid = cls._reg_clsid_ progID = _get(cls, '_reg_progid_') verProgID = _get(cls, '_reg_verprogid_') customKeys = _get(cls, '_reg_remove_keys_') unregister_typelib = _get(cls, '_reg_typelib_filename_') is not None UnregisterServer(clsid, progID, verProgID, customKeys) if not quiet: print('Unregistered:', progID or str(clsid)) if unregister_typelib: tlb_guid = _get(cls, "_typelib_guid_") if tlb_guid is None: # I guess I could load the typelib, but they need the GUID anyway. print("Have typelib filename, but no GUID - can't unregister") else: major, minor = _get(cls, "_typelib_version_", (1,0)) lcid = _get(cls, "_typelib_lcid_", 0) try: pythoncom.UnRegisterTypeLib(tlb_guid, major, minor, lcid) if not quiet: print('Unregistered type library') except pythoncom.com_error: pass extra = flags.get('finalize_unregister') if extra: extra()
def UnregisterTypelib(): k = CPippo try: pythoncom.UnRegisterTypeLib(k._typelib_guid_, k._typelib_version_[0], k._typelib_version_[1], 0, pythoncom.SYS_WIN32) print("Unregistered typelib") except pythoncom.error as details: if details[0] == winerror.TYPE_E_REGISTRYACCESS: pass else: raise
if __name__ == '__main__': if "--register" in sys.argv or "--unregister" in sys.argv: import pythoncom if TYPELIB: if '--register' in sys.argv: tlb = os.path.abspath( os.path.join(INSTALL_DIR, "typelib", "wsfev1.tlb")) print "Registering %s" % (tlb, ) tli = pythoncom.LoadTypeLib(tlb) pythoncom.RegisterTypeLib(tli, tlb) elif '--unregister' in sys.argv: k = WSFEv1 pythoncom.UnRegisterTypeLib(k._typelib_guid_, k._typelib_version_[0], k._typelib_version_[1], 0, pythoncom.SYS_WIN32) print "Unregistered typelib" import win32com.server.register #print "_reg_class_spec_", WSFEv1._reg_class_spec_ win32com.server.register.UseCommandLine(WSFEv1) elif "/Automate" in sys.argv: # MS seems to like /automate to run the class factories. import win32com.server.localserver #win32com.server.localserver.main() # start the server. win32com.server.localserver.serve([WSFEv1._reg_clsid_]) else: main()
def main(): global H**O, TYPELIB, DEBUG safe_console() if "--register" in sys.argv or "--unregister" in sys.argv: import pythoncom if TYPELIB: if "--register" in sys.argv: tlb = os.path.abspath( os.path.join(INSTALL_DIR, "typelib", "wsaa.tlb")) print("Registering %s" % (tlb, )) tli = pythoncom.LoadTypeLib(tlb) pythoncom.RegisterTypeLib(tli, tlb) elif "--unregister" in sys.argv: k = WSAA pythoncom.UnRegisterTypeLib( k._typelib_guid_, k._typelib_version_[0], k._typelib_version_[1], 0, pythoncom.SYS_WIN32, ) print("Unregistered typelib") import win32com.server.register win32com.server.register.UseCommandLine(WSAA) elif "/Automate" in sys.argv: # MS seems to like /automate to run the class factories. import win32com.server.localserver # win32com.server.localserver.main() # start the server. win32com.server.localserver.serve([WSAA._reg_clsid_]) elif "--crear_pedido_cert" in sys.argv: # instanciar el helper y revisar los parámetros wsaa = WSAA() args = [arg for arg in sys.argv if not arg.startswith("--")] # obtengo el CUIT y lo normalizo: cuit = len(args) > 1 and args[1] or input("Ingrese un CUIT: ") cuit = "".join([c for c in cuit if c.isdigit()]) nombre = len(args) > 2 and args[2] or "PyAfipWs" # consultar el padrón online de AFIP si no se especificó razón social: empresa = len(args) > 3 and args[3] or "" if not empresa: from .padron import PadronAFIP padron = PadronAFIP() ok = padron.Consultar(cuit) if ok and padron.denominacion: print(u"Denominación según AFIP:", padron.denominacion) empresa = padron.denominacion else: print(u"CUIT %s no encontrado: %s..." % (cuit, padron.Excepcion)) empresa = input("Empresa: ") # longitud de la clave (2048 predeterminada a partir de 8/2016) key_length = len(args) > 4 and args[4] or "" try: key_length = int(key_length) except ValueError: key_length = 2048 # generar los archivos (con fecha para no pisarlo) ts = datetime.datetime.now().strftime("%Y%m%d%M%S") clave_privada = "clave_privada_%s_%s.key" % (cuit, ts) pedido_cert = "pedido_cert_%s_%s.csr" % (cuit, ts) print("Longitud clave %s (bits)" % key_length) wsaa.CrearClavePrivada(clave_privada, key_length) wsaa.CrearPedidoCertificado(cuit, empresa, nombre, pedido_cert) print("Se crearon los archivos:") print(clave_privada) print(pedido_cert) # convertir a terminación de linea windows y abrir con bloc de notas if sys.platform == "win32": txt = open(pedido_cert + ".txt", "w") for linea in open(pedido_cert, "r"): txt.write("{}".format(linea)) txt.close() os.startfile(pedido_cert + ".txt") else: # Leer argumentos desde la linea de comando (si no viene tomar default) args = [arg for arg in sys.argv if arg.startswith("--")] argv = [arg for arg in sys.argv if not arg.startswith("--")] crt = len(argv) > 1 and argv[1] or CERT key = len(argv) > 2 and argv[2] or PRIVATEKEY service = len(argv) > 3 and argv[3] or "wsfe" ttl = len(argv) > 4 and int(argv[4]) or 36000 url = len(argv) > 5 and argv[5] or WSAAURL wrapper = len(argv) > 6 and argv[6] or None cacert = len(argv) > 7 and argv[7] or CACERT DEBUG = "--debug" in args print( "Usando CRT=%s KEY=%s URL=%s SERVICE=%s TTL=%s" % (crt, key, url, service, ttl), file=sys.stderr, ) # creo el objeto para comunicarme con el ws wsaa = WSAA() wsaa.LanzarExcepciones = True print("WSAA Version %s %s" % (WSAA.Version, H**O), file=sys.stderr) if "--proxy" in args: proxy = sys.argv[sys.argv.index("--proxy") + 1] print("Usando PROXY:", proxy, file=sys.stderr) else: proxy = None if "--analizar" in sys.argv: wsaa.AnalizarCertificado(crt) print(wsaa.Identidad) print(wsaa.Caducidad) print(wsaa.Emisor) print(wsaa.CertX509) ta = wsaa.Autenticar(service, crt, key, url, proxy, wrapper, cacert) if not ta: if DEBUG: print(wsaa.Traceback, file=sys.stderr) sys.exit(u"Excepcion: %s" % wsaa.Excepcion) else: print(ta) if wsaa.Excepcion: print(wsaa.Excepcion, file=sys.stderr) if DEBUG: print("Source:", wsaa.ObtenerTagXml("source")) print("UniqueID Time:", wsaa.ObtenerTagXml("uniqueId")) print("Generation Time:", wsaa.ObtenerTagXml("generationTime")) print("Expiration Time:", wsaa.ObtenerTagXml("expirationTime")) print("Expiro?", wsaa.Expirado())