Determine the Package ID of a software/component using the
        software/component ``publisher``, ``name``, whether its a software or a
        component, and if its 32bit or 64bit archiecture.

        Args:
            publisher (str): Publisher of the software/component.
            name (str): Name of the software.
            is_component (bool): True if package is a component.
            is_32bit (bool): True if the software/component is 32bit architecture.

        Returns:
            str: Package Id

def __software_to_pkg_id(self, publisher, name, is_component, is_32bit):
        '''
        Determine the Package ID of a software/component using the
        software/component ``publisher``, ``name``, whether its a software or a
        component, and if its 32bit or 64bit archiecture.

        Args:
            publisher (str): Publisher of the software/component.
            name (str): Name of the software.
            is_component (bool): True if package is a component.
            is_32bit (bool): True if the software/component is 32bit architecture.

        Returns:
            str: Package Id
        '''
        if publisher:
            # remove , and lowercase as , are used as list separators
            pub_lc = publisher.replace(',', '').lower()

        else:
            # remove , and lowercase
            pub_lc = 'NoValue'  # Capitals/Special Value

        if name:
            name_lc = name.replace(',', '').lower()
            # remove ,   OR we do the URL Encode on chars we do not want e.g. \\ and ,
        else:
            name_lc = 'NoValue'  # Capitals/Special Value

        if is_component:
            soft_type = 'comp'
        else:
            soft_type = 'soft'

        if is_32bit:
            soft_type += '32'  # Tag only the 32bit only

        default_pkg_id = pub_lc+'\\\\'+name_lc+'\\\\'+soft_type

        # Check to see if class was initialise with pkg_obj with a method called
        # to_pkg_id, and if so use it for the naming standard instead of the default
        if self.__pkg_obj and hasattr(self.__pkg_obj, 'to_pkg_id'):
            pkg_id = self.__pkg_obj.to_pkg_id(publisher, name, is_component, is_32bit)
            if pkg_id:
                return pkg_id

        return default_pkg_id