case INSTALL_BUILDID: *vp = INT_TO_JSVAL(NS_BUILD_ID); break;
GetInstallProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){  nsInstall *a = (nsInstall*)JS_GetPrivate(cx, obj);  // If there's no private data, this must be the prototype, so ignore  if (nsnull == a) {    return JS_TRUE;  }  if (JSVAL_IS_INT(id))   {    switch(JSVAL_TO_INT(id)) {      case INSTALL_PLATFORM:      {        nsCAutoString prop;        a->GetInstallPlatform(prop);        *vp = STRING_TO_JSVAL( JS_NewStringCopyZ(cx, prop.get()) );        break;      }      case INSTALL_BUILDID:        *vp = INT_TO_JSVAL(NS_BUILD_ID);        break;      case INSTALL_ARCHIVE:      case INSTALL_JARFILE:      {        nsInstallFolder* folder = new nsInstallFolder();        if ( folder )        {          folder->Init(a->GetJarFileLocation());          JSObject* fileSpecObject =               JS_NewObject(cx, &FileSpecObjectClass, gFileSpecProto, NULL);          if (fileSpecObject)          {            JS_SetPrivate(cx, fileSpecObject, folder);            *vp = OBJECT_TO_JSVAL(fileSpecObject);          }          else              delete folder;        }        break;      }      case INSTALL_ARGUMENTS:      {        nsAutoString prop;                a->GetInstallArguments(prop);         *vp = STRING_TO_JSVAL( JS_NewUCStringCopyN(cx, NS_REINTERPRET_CAST(const jschar*, prop.GetUnicode()), prop.Length()) );                break;      }              case INSTALL_URL:      {        nsString prop;                a->GetInstallURL(prop);         *vp = STRING_TO_JSVAL( JS_NewUCStringCopyN(cx, NS_REINTERPRET_CAST(const jschar*, prop.GetUnicode()), prop.Length()) );                break;      }      case INSTALL_FLAGS:          *vp = INT_TO_JSVAL( a->GetInstallFlags() );          break;      case INSTALL_STATUSSENT:          *vp = BOOLEAN_TO_JSVAL( a->GetStatusSent() );          break;      case INSTALL_INSTALL:          *vp = OBJECT_TO_JSVAL(obj);          break;              case INSTALL_INSTALLED_FILES:          *vp = BOOLEAN_TO_JSVAL( a->InInstallTransaction() );          break;      default:        return JS_TRUE;    }  }  else {    return JS_TRUE;  }  return PR_TRUE;}